3 回答

TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊
首先,這不稱為過濾。它被稱為分組。您可以按以下步驟執(zhí)行此操作:
首先
reduce()
在數(shù)組上使用并將累加器設(shè)置為空對(duì)象{}
在每次迭代期間
id
,postedUserId
使用解構(gòu)獲取和是單獨(dú)的變量。并使用擴(kuò)展運(yùn)算符獲取其余屬性。然后檢查
id
累加器中是否已經(jīng)存在當(dāng)前的項(xiàng)目。如果它在那里,則將其推
postedUserId
送到其postedUsers
數(shù)組。如果該鍵不存在,則將
id
累加器上的鍵()設(shè)置為具有postedUsers
空數(shù)組的對(duì)象。
var arr1 = [{"name":"harkaran","lname":"sofat","userId":49,"postedUserId":52,"id":21,},{"name":"harkaran","lname":"sofat","userId":49,"postedUserId":57,"id":21,}];
const res = arr1.reduce((ac,{id,postedUserId,...rest}) => {
if(!ac[id]) ac[id] = {id,postedUserId,postedUsers:[],...rest};
ac[id].postedUsers.push(postedUserId);
return ac;
},{})
console.log(Object.values(res))
您在評(píng)論中詢問了簡(jiǎn)單for循環(huán),所以這是它的版本。
var arr1 = [{"name":"harkaran","lname":"sofat","userId":49,"postedUserId":52,"id":21,},{"name":"harkaran","lname":"sofat","userId":49,"postedUserId":57,"id":21,}];
let res = {};
for(let i = 0; i<arr1.length; i++){
let {id,postedUserId,...rest} = arr1[i];
if(!res[id]) res[id] = {id,postedUserId,postedUsers:[],...rest};
res[id].postedUsers.push(postedUserId);
}
console.log(Object.values(res))
添加回答
舉報(bào)