常常存在获取后台数据后,往页面渲染需要给获取到的数组去重,但数组中是对象,无法使用new set()等方法。这里记录两个简单易用的方法来去重:
var arr = [{
key: "01",
value: "Zander"
},{
key: "02",
value: "John"
},{
key: "03",
value: "Censek"
},{
key: "01",
value: "Doris"
}
]
方法一、利用对象访问属性的方法,判断对象中是否存在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); //[ { key: '01', value: 'Zander' },{ key: '02', value: 'John' },{ key: '03', value: 'Censek' } ]
方法二、利用reduce方法遍历数组,reduce第一个参数是遍历需要执行的函数,第二个参数是item的初始值,原理同上
var obj = {};
arr = arr.reduce(function(item, next) {
obj[next.key] ? '' : obj[next.key] = true && item.push(next);
return item;
}, []);
console.log(result); //[ { key: '01', value: 'Zander' },{ key: '02', value: 'John' },{ key: '03', value: 'Censek' } ]