方法一:使用 .filter() 和 .findIndex() 相结合的方法
const arr = [{id: 1, name: "a"}, {id: 2, name: "b"},
{id: 1, name: "c"}, {id: 3, name: "d"}];
const uniqueArr = arr.filter((item, index) =>
arr.findIndex(i => i.id === item.id) === index);
console.log(uniqueArr);
方法二:使用 .reduce() 方法
const arr = [{id: 1, name: "a"}, {id: 2, name: "b"},
{id: 1, name: "c"}, {id: 3, name: "d"}];
const uniqueArr = arr.reduce((acc, curr) => {
if (!acc.find(item => item.id === curr.id)) {
acc.push(curr);
}
return acc;
}, []);
console.log(uniqueArr);
方法三:使用 .forEach() 和 .some() 相结合的方法
const arr = [{id: 1, name: "a"}, {id: 2, name: "b"},
{id: 1, name: "c"}, {id: 3, name: "d"}];
const uniqueArr = [];
arr.forEach(item => {
if (!uniqueArr.some(i => i.id === item.id)) {
uniqueArr.push(item);
}
});
console.log(uniqueArr);
方法四:使用 Map
const arr = [{id: 1, name: "a"}, {id: 2, name: "b"},
{id: 1, name: "c"}, {id: 3, name: "d"}];
const uniqueArr = [...new Map(arr.map(item => [item.id, item])).values()];
console.log(uniqueArr);
方法五:使用every去重,如果新数组里没有aa里面相同的数据,那么就push
const arr = [{id: 1, name: "a"}, {id: 2, name: "b"},
{id: 1, name: "c"}, {id: 3, name: "d"}];
var newArr = [];
arr.forEach(function (a) {
var check = newArr.every(function (b) {
return a.zerendepartment !== b.zerendepartment;
})
check ? newArr.push(a) : '' //去重后push
})
console.log(newArr ,'newArr ');
方法六
this.phoneList = this.unique(this.phoneList,'id')
unique(arr, key) {
const res = new Map();
return arr.filter((arr) => !res.has(arr[key]) && res.set(arr[key], 1));
},
其中以id作为检验数据的唯一