实现对象数组去重的方法
# 实现对象数组去重的方法
# 功能描述
数组元素是对象,根据每个对象的某一个具体属性来进行去重。
# 手写实现
注意:该方法会返回一个新的去重后的数组。
利用高阶函数 reduce
进行去重,需要注意该函数的第二个参数 initialValue
得放一个空数组 []
,不然没法 push
。
function distinct(objectArray, key) {
return objectArray.reduce((acc, value) => {
const keys = acc.map(item => item[key]);
return keys.includes(value[key]) ? acc : [...acc, value];
}, [])
}
1
2
3
4
5
6
2
3
4
5
6
# 测试用例
let data = [
{ name: "张三", age: "18" },
{ name: "张三", age: "19" },
{ name: "张三", age: "20" },
{ name: "李四", age: "19" },
{ name: "王五", age: "20" },
{ name: "赵六", age: "21" }
]
const result = distinct(data, 'name');
console.log(result); // (4)[{…}, {…}, {…}, {…}]
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
(完)