// 利用set、reduce、filter去重
// 1.Set
function
getSetArr(arr) {
return
[...
new
Set(arr)]
}
console.log(getSetArr([1, 2, 3, 1, 3]))
// [1, 2, 3]
// 2.reduce
function
getRedArr(arr) {
let
arr1 = arr.reduce((ar, cur) => {
if
(!ar.includes(cur)) {
ar.push(cur)
}
return
ar
}, [])
return
arr1
}
console.log(getRedArr([1, 2, 4, 5, 1, 2]))
// [1, 2, 4, 5]
// 3.filter
function
getFilArr(arr) {
let
arr1 = arr.filter((item, index) => {
return
arr.indexOf(item) === index
})
return
arr1
}
console.log(getFilArr([1, 1, 1, 2]))
// [1, 2]
js 对象数组去重并保留最后一项
1.去重方法封装(vue中使用),其中arr传要去重的数组,name为需要去重的字段
// 数组去重
arrayUnique(arr, name) {
let hash = {};
return arr.reduce((acc, cru, index) => {
if (!hash[cru[name]]) {
hash[cru[name]] = { index: acc.length };
acc.push(cru);
} else {
acc.splice(hash[cru[name]]["index"], 1, cru);
}
return acc;
}, []);
},
2.使用
例如:要去重的数组为:dataArray: [
{date: '2022-09-20', value: '1次'},
{date: '2022-09-20', value: '2次'},
{date: '2022-09-20', value: '3次'} ]
let arr = [] arr = this.arrayUnique(this.dataArray, 'date') // [{date: '2022-09-20', value: '3次'}]