"
"
需求描述
vue中合并两个数组,并且按某一列去重,只保留最后一个。
解决方法
去重方法封装(vue中使用),其中arr传要去重的数组,name为需要去重的字段:
//数组去重方法,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;
}, [])
},
示例
要去重的数组:
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次'}]