# 数组去重
# 快速导航
# 方法 1-indexOf 方法去重
将原数组中的元素和结果数组中的元素一一比较
indexOf()
方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1 MDN-indexOf 官网文档 (opens new window)
点击即可查看数组去重
function unique(arr) {
if (!Array.isArray(arr)) {
return;
}
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i]);
}
}
return newArr;
}
let arrs = ['hello', 'java', 'JavaScript', 'CSS', 'java', 'Es6'];
console.log(unique(arrs));
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
# 方法 2-filter 结合 indexOf
点击即可查看
function unique(arr) {
var res = arr.filter(function(item, index, array) {
return array.indexOf(item) === index;
});
return res;
}
var a = ['java', 'linux', 'javaScript', 'linux', 'centos', 'centos'];
console.log(unique(a)); // ["java", "linux", "javaScript", "centos"]
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 方法 3-Es6 中的拓展运算符
点击即可查看
function noRepeat(arr) {
return [...new Set(arr)];
}
var arrs = ['java', 'linux', 'javaScript', 'linux', 'centos', 'centos'];
console.log(noRepeat(arrs));
1
2
3
4
5
6
2
3
4
5
6
# 方法 4-Array.from 结合 new Set
点击即可查看
function noRepeat(arr) {
return Array.from(new Set(arr));
}
var arrs = ['java', 'linux', 'javaScript', 'linux', 'centos', 'centos'];
console.log(noRepeat(arrs));
1
2
3
4
5
6
2
3
4
5
6