- 首先,es6中普通数组去重的方法(只讲Set方法,因为待会会用到):
new Set();
const arr = [1,2,2,2,2,3,1];
const newArr = new Set(arr);
console.info(newArr); //结果[1,2,3]
- 对象数组去重的方法:
- 方法一:
const arr = [
{
name: 'tom',
age: 12,
key: 1,
},
{
name: 'jurry',
age: 10,
key: 2,
},
{
name: 'jurry',
age: 10,
key: 2,
},
{
name: 'tom',
age: 12,
key: 1,
}];
console.info('原始数组:', arr);
const keyArr = [];
arr.forEach((element,index) => {
keyArr.push(element.key); // 通过key来判断
});
const newArr = [];
const newKey = new Set(keyArr); // key去重
newKey.forEach(item =>{
const index = keyArr.findIndex(item2 => item2 === item);
newArr.push(arr[index]);
})
console.info('去重后的数组:', newArr);
结果
- 方法二:
利用reduce
const arr = [
{
name: 'tom',
age: 11,
key: 1,
},
{
name: 'jurry',
age: 12,
key: 2,
},
{
name: 'jurry',
age: 10,
key: 2,
},
{
name: 'tom',
age: 12,
key: 1,
}];
console.info('原始数组:', arr);
const hash = {};
const newArray = arr.reduce((item, next)=>{
hash[next.key] ? '' : hash[next.key] = true && item.push(next);
return item;
},[])
console.info('去重后的数组:', newArray);
结果
3.方法三:
loading...