序文
みなさん、こんにちは、今日は配列オブジェクトの重複排除の方法をいくつか紹介します. 配列オブジェクトの重複排除もよく使われるので共有します.
1.配列の内容
最初に配列を作成します。以下は、作成された配列です。
let arrs = [{
id: '1',
key: '1',
value: '张三'
}, {
id: '3',
key: '2',
value: '李四'
}, {
id: '2',
key: '3',
value: '王五'
}, {
id: '1',
key: '1',
value: '赵六'
}, {
id: '1',
key: '2',
value: '马七'
}]
2. 取り外し方法
1.オブジェクトアクセス属性方式
コードは次のとおりです (例)。
let newArr = [];
let obj = {
};
for (var i = 0; i < arrs.length; i++) {
if (!obj[arrs[i].key]) {
newArr.push(arrs[i])
obj[arrs[i].key] = true
}
}
console.log(newArr);
2. Map() メソッド
コードは次のとおりです (例)。
let map = new Map();
for (let item of this.arrs) {
map.set(item.id, item);
}
this.arrs = [...map.values()];
console.log(this.arrs)
set メソッドは、キーに対応するキー値を設定し、Map 構造全体を返します。キーがすでに値を持っている場合、キーの値が更新されます。そうでない場合、キーは新しく生成されます。
values メソッドは、Map オブジェクトの値の iterator オブジェクトを返すことができます。
3.reduce() メソッド
reduce() メソッドはアキュムレータとして関数を受け取り、配列内の各値 (左から右へ) は最初に値に縮小されます
。
const obj = {
}
arr = arrs.reduce((total, next) => {
obj[next.key] ? '' : obj[next.key] = true && total.push(next)
return total
}, [])
console.log(arrs)
ここでもう1つ必要なのが、判定条件が2つ以上ある場合は、配列オブジェクトを重複排除して判定条件を追加することです。
const hasObj = {
}
arrs = arrs.reduce((total, next) => {
const filterKey = next.key + next.id;
hasObj[filterKey] ? "" : hasObj[filterKey] = true && total.push(next)
return total
}, [])
console.log(arrs)
結論:
以上がこの章の全内容です。お役に立てれば幸いです。