不规则的数组去重在平时比较常见,它不同于纯数组去重那么方便,就需要自己写方法解决
let arr = [1, 2, 5, 3, 8, 6, 9, 4, 6, 7, 2, 9,
{
id: 2, name: '张三', sex: '男'
}, {
id: 2, name: '张三', sex: '男'
}, [2, 5, 4, 5],
[{
id: 3, name: '李四', sex: '女'
}, {
id: 3, name: '李四', sex: '女'
}]
]
方法如下:
let arr2 = []
const deduplicationArr = (arr) => {
let arr3 = []
let arr4 = []
for (let i = 0; i < arr.length; i++) {
if (typeof arr[i] != 'number') { //先判断是否是Object类型
if (arr[i] instanceof Array) { //判断是否是数组类型
deduplicationArr(arr[i])
} else { //对象
arr3.push(arr[i])
}
} else { //数组类型
arr2.push(arr[i])
}
}
//arr2排序去重
if (arr2.length > 0) {
arr2.sort()
for (let i = 0; i < arr2.length; i++) {
if (arr2[i] == arr2[i + 1]) {
arr2.splice(i, 1)
i--
}
}
}
if (arr3.length > 0) {
for (let j = 0; j < arr3.length; j++) {
if (!arr4.some(e => e.id == arr3[j].id)) { //find方法一样
arr4.push(arr3[j])
}
}
arr2.push(...arr4)
}
return arr2
}
结果:
欢迎补充,一起进步。