var arrLike = {
0: {
name: "Kitty",
age: "25"
},
1: {
name: "Kitty",
age: "25"
},
2: {
name: "Kitty",
age: "26"
},
3: {
name: "Kris",
age: "24"
},
4: {
name: "Andy",
age: "25"
},
5: {
name: "Kitty",
age: "25"
},
6: {
name: "Andy",
age: "28",
mme: 45
},
length: 7,
}
const normalArr = [1,1,2,3,5,5,6,6,8,9]
/**
*
* @param {Array} arr 数组或者伪数组
* @param {String=} attr 去重里面attr重复的对象,可选值
* @returns {Array} newArr 返回一个去重后的新数组
*/
const deduplication = (arr, attr = '') => {
if (!attr) { // attr为空,普通数组去重
return [...new Set(arr)]
} else { // attr为不空, 对象数组普通数组去重
const dataReducer = (prev, cur) => {
let obj = {}
const attrValue = cur[attr]
obj[attrValue] = cur
return {
...prev,
...obj
}
}
const reducedData = Array.prototype.reduce.call(arr, dataReducer, {})
return Object.values(reducedData)
}
}
console.log(deduplication(normalArr))