js实现数组去重怎么实现?
- IndexOf()
- 双重for循环
- es6的 […new Set()]
- filter()
- sort()
面试随便写一两种就行、项目直接用new Set()(方便)
方法1. 创建一个新的临时数组来保存数组中已有的元素
var oLis = new Array(1, 2, 2, 2, 2, 5, 3, 2, 9, 5, 6, 3),
n = []
for (var i = 0; i < oLis.length; i++) {
if (n.indexOf(oLis[i]) == -1) {
n.push(oLis[i])
}
}
console.log(n)//[1, 2, 5, 3, 9, 6]
方法2. 使用哈希表存储已有的元素
var oLis = new Array(1, 2, 2, 2, 2, 5, 3, 2, 9, 5, 6, 3),
hash = {},
n = []; //hash 作为哈希表, n为临时数组
for (var i = 0; i < oLis.length; i++) {
if (!hash[oLis[i]]) { //如果hash表中没有当前项
hash[oLis[i]] = true; //存入hash表
n.push(oLis[i]); //当前元素push到临时数组中
}
}
console.log(n) //[1, 2, 5, 3, 9, 6]
方法3. 先排序再去重
var oLis = new Array(1, 2, 2, 2, 2, 5, 3, 2, 9, 5, 6, 3)
oLis.sort(function(a, b) {return a - b;})
var n = [oLis[0]];
for (var i = 1; i < oLis.length; i++) {
if (oLis[i] !== oLis[i - 1]) {
n.push(oLis[i]);
}
}
console.log(n) //[1, 2, 5, 3, 9, 6]

浙公网安备 33010602011771号