亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

抓取數組中沒有任何重復項的對象的最有效方法

抓取數組中沒有任何重復項的對象的最有效方法

鳳凰求蠱 2022-09-16 21:48:54
我有2個腳本對象數組:arr1=[{'id':'A'},{'id':'B'}, {'id':'C'}]; arr2=[{'id':'A'},{'id':'C'}, {'id':'D'}, {'id': 'E'}];如何僅獲取沒有重復項的元素?謝謝。編輯我不想刪除重復項。我只想獲取唯一對象。output = [{'id':'B'}, {'id':'D'}, {'id':'E'}]不output = [{'id':'A'},{'id':'B'}, {'id':'C'}, {'id':'D'}, {'id':'E'}]抱歉,如果我不清楚
查看完整描述

4 回答

?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

arr1=[{'id':'A'},{'id':'B'}, {'id':'C'}];

arr2=[{'id':'A'},{'id':'C'}, {'id':'D'}, {'id': 'E'}];


const out = Object.entries(arr1.concat(arr2).reduce((a, c) => {

  a[c.id] = a[c.id] || 0;

  a[c.id]++;

  return a;

}, {})).filter(([k, v]) => v === 1).map(([k]) => ({id: k}));


console.log(out);


查看完整回答
反對 回復 2022-09-16
?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

有點亂,但它有效。首先查找僅出現一次的 id,然后篩選組合數組以僅包含唯一 ID。


arr1 = [{ id: "A" }, { id: "B" }, { id: "C" }];

arr2 = [{ id: "A" }, { id: "C" }, { id: "D" }, { id: "E" }];


function getCount(array, elem) {

    return array.filter((e) => e === elem).length;

}


uniqueIds = [...arr1, ...arr2]

    .map((e) => e.id)

    .filter((e, i, a) => getCount(a, e) === 1);


let uniques = [...arr1, ...arr2].filter((e) => uniqueIds.includes(e.id));


console.log(uniques);


查看完整回答
反對 回復 2022-09-16
?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

好吧,所以也許不是。以下是一種像您要求的那樣檢索輸出的方法:


arr1=[{'id':'A'},{'id':'B'}, {'id':'C'}];

arr2=[{'id':'A'},{'id':'C'}, {'id':'D'}, {'id': 'E'}];


function getUniques(arr) {

  let counter = arr.reduce((acc, val) =>

    (acc[val.id] = (acc[val.id] || 0) + 1, acc), {});

  return Object.keys(counter)

    .filter(k => counter[k] === 1)

    .map(k => ({id: k}));

}


console.log(getUniques([...arr1, ...arr2]));


查看完整回答
反對 回復 2022-09-16
?
SMILET

TA貢獻1796條經驗 獲得超4個贊

只是另一種方法:


 arr1=[{'id':'A'},{'id':'B'}, {'id':'C'}];

 arr2=[{'id':'A'},{'id':'C'}, {'id':'D'}, {'id': 'E'}];

 var res = [];

 var newArr = arr1.concat(arr2);

 var reverseArr = newArr.slice().reverse();

 newArr.forEach((el,idx)=> {

 let iex = newArr.findIndex((e,i)=> e.id == el.id );

 if (iex === idx && iex === newArr.length - (reverseArr.findIndex((e,i)=> e.id == 

   el.id )+ 1) ){

     res.push(el)

   }

});

console.log(res) 


查看完整回答
反對 回復 2022-09-16
  • 4 回答
  • 0 關注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號