I.输入
JS对象数组去重是业务经常遇到的方法,稍微简洁一点的方法,如下:
var data = [
{"id": 1, "name": "李四1"},
{"id": 1, "name": "李四2"},
{"id": 1, "name": "李四3"},
{"id": 1, "name": "李四1"},
{"id": 5, "name": "李四5"},
];
P.去重方法
function ArrSet(Arr, id) {
var obj = {};
arrays = Arr.reduce((setArr, item) => {
obj[item[id]] ? '' : obj[item[id]] = true && setArr.push(item);
return setArr;
}, []);
return arrays;
}
console.log(ArrSet(data, 'id'));
console.log(ArrSet(data, 'name'));
O.打印台结果
总结:思路分析
reduce()是数组的并归方法,其接受四个参数。
reduce(上一个并归值,当前项,当前项的索引,数组本身)
例:使用reduce()函数执行累加数组中所有数组的操作
let values = [1,2,3,4,5,6];
let sum = values.reduce((prev, cur, index, array) => prev + cur);
console.log(sum) // 打印出21
显然函数每次迭代返回prev + cur,然后prev + cur 成为下一次的prev值来进行迭代,最终返回的就是
(1+ 2) + 3) + 4) + 5) + 6的过程。最后返回归并结果。
*注:方法reduce()还有一个类似方法reduceRight(),只是方向相反,并没有别的不同。
参考文献
[1] JavaScript高级程序设计(第四版)