关于js 对象数组去重的方法整理
方法一:
采用对象访问属性的方法,判断属性值是否存在,如果不存在就添加。
方法二:
采用数组中的reduce方法,遍历数组,也是通过对象访问属性的方法。
关于reduce语法:
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
参数
参数描述
function(total,currentValue, index,arr)必需。用于执行每个数组元素的函数。
函数参数:
参数描述
total必需。初始值, 或者计算结束后的返回值。
currentValue必需。当前元素
currentIndex可选。当前元素的索引
arr可选。当前元素所属的数组对象。
initialValue可选。传递给函数的初始值
例子:
var arr =
[{ key: '1', value: 'aa'},
{ key: '2', value: 'bb' },
{ key: '3', value: 'cc'},
{key: '4',value: 'dd' },
{key: '1',value: 'aa'}];
方法一:利用对象访问属性的方法,判断对象中是否存在key
var result = [];
var obj = {};
for(var i =0; i<arr.length;i++){
if(!obj[arr[i].key]){
result.push(arr[i]);
obj[arr[i].key] =true;
}
}
console.log(result);
方法二:利用reduce方法遍历数组,reduce第一个参数是遍历需要执行的函数,第二个参数是item的初始值
var obj = {};
arr = arr.reduce(function(item, next) {
obj[next.key] ? ' ' : obj[next.key] =true&& item.push(next);
return item;
}, []); //设置item默认类型为数组,并且初始值为空的数组
console.log(arr);