鍍金池/ 問答/HTML5  網(wǎng)絡(luò)安全  HTML/ es6的Set如何自定義去重規(guī)則?對象數(shù)組如何根據(jù)某一列屬性去重?

es6的Set如何自定義去重規(guī)則?對象數(shù)組如何根據(jù)某一列屬性去重?

比如根據(jù)a數(shù)組元素中的name屬性去重

這是最簡潔的方法了嗎?

function unique(arr) {
    const res = new Map();
    return arr.filter((a) => !res.has(a.name) && res.set(a.name, 1))
}

引用:
https://segmentfault.com/q/10...

回答
編輯回答
愛是癌

function unique(arr) {

const res = new Map();
return arr.filter((a) => !res.has(a.name) && res.set(a.name, 1))

}

2017年6月17日 22:49
編輯回答
單眼皮

就是Set對象里的每一個(gè)數(shù)據(jù)地址不同,即為不同的對象!
對象類型的數(shù)組,如定義:[{a:1,b:2},{a:1,b:3},{a:1,b:2}] 過濾之后還是三個(gè)對象;
但是 如果你是 let obj = {a:1,b:2}; arr.push(obj);這樣放進(jìn)去 最終會(huì)被過濾掉冗余的,只剩一個(gè)

const arrayUniq = (x) => [...new Set(x)];
let arr1 = [{a:1,b:2},{a:1,b:3},{a:1,b:2}];
let arr2 = [{a:1,b:3}];
let obj = {a:1,b:2};
arr2.push(obj);
arr2.push(obj);

arrayUniq(arr1);
//[{a:1,b:2},{a:1,b:3},{a:1,b:2}]
arrayUniq (arr2);
//[{a:1,b:2},{a:1,b:3}]

2017年1月31日 08:07
編輯回答
朽鹿

沒看懂題目,但如果按照給出代碼的話來看,這個(gè)可能更簡潔一點(diǎn)。

const arrayUniq = (x) => [...new Set(x)];
2017年9月14日 01:03