相信在开发过程中大家都有遇到需要对数据进行去重的需求。后台返回的数据都是json数据嵌套,那么就会面临需要对嵌套数据进行去重的要求。这个问题一开始我是使用遍历循环判断实现的,但是es6的reduce方法为我们提供了更好的实现方式。以下是代码实现:
function uniqueArr (arr, key) {
let hash = {};
return arr.reduce((newArr, item, index, arr) => {
hash[item[key]] ? '' : hash[item[key]] = true && newArr.push(item);
return newArr;
},[])
}
但是这种方法有一个弊端相信大家都已经看出来了,就是作为hash去重对象的key,最后item[key]的值,Number类型和String类型的数字会被认为是重复对象而被去除。但是这确实是一个比较简单的数组对象出重方式。
网友评论