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

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

在對象數組中選擇唯一項目

在對象數組中選擇唯一項目

手掌心 2021-06-16 14:01:03
假設我有以下對象數組[{a:1,b:2,c:4}, {a:3,b:4,c:7}, {a:7,b:10,c:10}, {a:1, b:2,c:4}]如何選擇此數組中的唯一項。我需要比較兩個字段(僅 a、b,不包括 c),并且我看到的示例顯示了一個僅包含單個字段的地圖。
查看完整描述

3 回答

?
HUH函數

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

對于動態鍵,創建一個函數,該函數將表示鍵的數組和數組字符串作為輸入。


創建另一個輔助方法來比較兩個對象的給定鍵。


使用filter()對象的數組,然后使用對every()當前索引之前元件不等于關于給定鍵的當前對象。


let arr = [{a:1,b:2,c:4}, {a:3,b:4,c:7}, {a:7,b:10,c:10}, {a:1, b:2,c:4}];

function comp(obj1,obj2,keys){

  return keys.every(k => obj1[k] === obj2[k]);

}

function getUnique(arr,keys){

  return arr.filter((x,i) => arr.slice(0,i).every(a => !comp(a,x,keys)))

}


console.log(getUnique(arr,['a','b']))


查看完整回答
反對 回復 2021-06-18
?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

您可以reduce使用 aMap作為累加器的數組。使用a和b屬性的組合作為鍵,以便刪除重復項。然后使用Map#values獲取輸出


const input = [{a:1,b:2,c:4}, {a:3,b:4,c:7}, {a:7,b:10,c:10}, {a:1, b:2,c:4}],

      mapped = input.reduce((map, o) => map.set(o.a + "_" + o.b, o), new Map),

      output = Array.from(mapped.values());


console.log(output)


查看完整回答
反對 回復 2021-06-18
  • 3 回答
  • 0 關注
  • 183 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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