例:
let data = [
{ id: 202201, name: '张三', age: 15, },
{ id: 202204, name: 'John', age: 18, },
{ id: 202202, name: '李四', age: 18, },
{ id: 202201, name: '张三', age: 15, },
{ id: 202205, name: 'Jack', age: 18, },
{ id: 202203, name: '王五', age: 10, },
{ id: 202205, name: 'Jack', age: 18, },
{ id: 202204, name: 'John', age: 18, },
{ id: 202205, name: 'Jack', age: 18, },
];
let newdata = this.$reduiceArr(data , ['age','name']);//传入数组格式
//对象数组去重,这里根据key去重,根据需要传入
//reduce方法callback支持四个参数(preval,curval,index,arr),preval为默认值,若不传即为数组第一项,curval就是数组第二项,index下标就会从1开始。
//preval若是传入了初始默认值,curval开始就是数组第一项,index从0开始。
Vue.prototype.$reduiceArr = function (data, keys) {
let hash = {}
let newdata = []
newdata = data.reduce((preval, curVal, index, arr) => {
let createValue = ''
keys.reduce((pre, cur) => {
createValue += curVal[cur]
}, [])
Object.assign(curVal, { createKey: createValue })//添加新属性和新值
hash[curVal['createKey']] ? '' : hash[curVal['createKey']] = true && preval.push(curVal)//根据新属性的新值去重
return preval
}, [])
return newdata
}