多种方式实现数组去重
# 使用for循环
const unique = (arr) => {
let res = []
for(let i = 0; i < arr.length; i++) {
if (!res.includes(arr[i])) {
res.push(arr[i])
}
}
return res
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 使用Set
const unique = (arr) => {
return [...new Set(arr)]
}
1
2
3
2
3
# 使用reduce
const unique = (arr) => {
return arr.reduce((res, v) => {
return !res.includes(arr[i]) ? [...res, arr[i]] : res
}, [])
}
1
2
3
4
5
2
3
4
5
# 使用Map或键值对
// map
const unique = (arr) => {
const map = new Map();
return arr.filter(item => !map.has(item) && map.set(item, true));
}
// object键值对
const unique = (arr) => {
const obj = {};
// 键值对需要区分类型,比如1和'1'
return arr.filter(item => {
const v = (typeof item) + item
return !obj.hasOwnProperty(v) ? obj[v] = true : false
});
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
上述讨论的是普通数组去重,如果是对象数组去重需要写自定义去重函数或使用Map
上次更新: 2025/09/05, 8:09:00