最近,正在开发后台管理系统,需要频繁处理数据,尤其是数组对象去重。今天刚好有时间就分享一下比较常用的数组去重方法,希望对大家有帮助!
方法一:使用双重循环实现
var arr = [{ name: '小明', id: 1 }, { name: '张晓', id: 2 }, { name: '王哈', id: 3 }, { name: '刘海', id: 4 },
{ name: '小明', id: 6 }, { name: '李宁', id: 7 }, { name: '王哈', id: 8 }];
var temp = [];
function uniqueArray() {
arr.forEach(function (a) {
var check = temp.every(function (b) {
return a.name !== b.name;
})
check ? temp.push(a) : ''
})
return temp;
}
var result = uniqueArray();
console.log('方法一:es5,result=', result);
运行结果:
1.png
方法二:使用ES6中的map实现
var arr = [{ name: '小明', id: 1 }, { name: '张晓', id: 2 }, { name: '王哈', id: 3 }, { name: '刘海', id: 4 },
{ name: '小明', id: 6 }, { name: '李宁', id: 7 }, { name: '王哈', id: 8 }];
let uniqueArray = () => {
let name = 'name';
let map = new Map();
for (let item of arr) {
if (!map.has(item.name)) {
map.set(item.name, item);
}
}
return [...map.values()];
}
let result = uniqueArray();
console.log('方法二:result=', result);
运行结果:
2.png
方法三:使用reduce实现
var arr = [{ name: '小明', id: 1 }, { name: '张晓', id: 2 }, { name: '王哈', id: 3 }, { name: '刘海', id: 4 },
{ name: '小明', id: 6 }, { name: '李宁', id: 7 }, { name: '王哈', id: 8 }];
var obj = {};
function uniqueArray() {
arr = arr.reduce(function (a, b) {
obj[b.name] ? '' : obj[b.name] = true && a.push(b);
return a;
}, [])
return arr;
}
var result = uniqueArray();
console.log( '方法三:result=', result);
运行结果:
3.png
方法四:利用对象访问属性的方法
var arr = [{ name: '小明', id: 1 }, { name: '张晓', id: 2 }, { name: '王哈', id: 3 }, { name: '刘海', id: 4 },
{ name: '小明', id: 6 }, { name: '李宁', id: 7 }, { name: '王哈', id: 8 }];
function uniqueArray() {
var result = [];
var obj = {};
for(var i =0; i<arr.length; i++){
if(!obj[arr[i].name]){
result.push(arr[i]);
obj[arr[i].name] = true;
}
}
return result;
}
var result = uniqueArray();
console.log( '方法四:result=', result);
运行结果:
4.png
如果放弃太早,你永远都不知道自己会错过什么。加油鸭!