- 数组的子集为对象时
-
利⽤对象的键名⽆法重复的特点,可以新建⼀个临时对象来存储原数组中的对象⼦集的值,mail_user_id是唯⼀的ID,然后设置的它为临时对象的键名,值为true即可,保证它的唯⼀性
-
通过判断对象的键名是唯⼀时,把对应的数组值添加到⼀个空数组中,最终得到⼀个去重后的数组对象
-
此⽅法不会改变数组对象原有的排序
const arr = this.userAllData
const result = {}
const finalResult = []
for (let i = 0; i < arr.length; i++) {
// 利⽤对象的键名⽆法重复的特点,mail_user_id是唯⼀区别的属性值
result[arr[i].mail_user_id] ? '' : result[arr[i].mail_user_id] = true && finalResult.push(arr[i])
}
this.userAllData = finalResult
- 或者利⽤ES5数组⽅法reduce
const arrUnique = function(arr) {
const ojb = {}
arr = arr.reduce(
function(prevArr, currentItem) {
// 利⽤对象的键名⽆法重复的特点,mch_id是唯⼀区别的属性值
ojb[currentItem.mail_user_id] ? '' : ojb[currentItem.mail_user_id] = true &&prevArr.push(currentItem)
return prevArr
}, [])
return arr
}