数组去重

# 双层循环
function unique(array) {
var res = [];
for (var i = 0, arrayLen = array.length; i < arrayLen; i++) {
for (var j = 0, resLen = res.length; j < resLen; j++) {
if (array[i] === res[j]) break;
}
if (j === resLen) res.push(array[i]);
}
return res;
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# indexOf
function unique(array) {
var res = [];
for (var i = 0, len = array.length; i < len; i++) {
var current = array[i];
if (res.indexOf(current) === -1) res.push(current);
}
return res;
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 排序后去重
function unique(array) {
var res = [];
var sortedArray = array.concat().sort();
console.log(sortedArray);
var seen;
for (var i = 0, len = sortedArray.length; i < len; i++) {
if (!i || seen !== sortedArray[i]) res.push(sortedArray[i]);
seen = sortedArray[i];
}
return res;
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# filter
function unique(array) {
return array.concat().sort().filter(function (item, index, array) {
return !index || item !== array[index - 1];
});
}
1
2
3
4
5
2
3
4
5
# ES6
# Set
const unique = (a) => [...new Set(a)];
1
# Map
const unique = (arr) => {
const seen = new Map();
return arr.filter(a => !seen.has(a) && seen.set(a, 1));
};
1
2
3
4
2
3
4
上次更新: 2022/09/07, 15:54:26