数组去重 · 长剑腥腥挂壁

1.Set(ES6最常用)

1
2
3
4
function (arr){
var tem = new Set(arr);
return [...tem] 或者 Array.from(tem);
}

2.利用for嵌套for,然后splice去重(ES5中最常用)

1
2
3
4
5
6
7
8
9
10
11
12
13
function (arr) {
for(let i=0; i<arr.length; i++){
for(let j=i+1; j<arr.length; j++){

if(arr[i]===arr[j]){
arr.splice[j,1]
// 第二个元素被删除,下一个元素顶替,还要原地对比一次
j--;
}
}
}
return arr;
}

3.利用indexOf去重

1
2
3
4
5
6
7
8
9
10
11
function (arr){
let array = [ 大专栏  数组去重 · 长剑腥腥挂壁];
for(let i=0; i<arr.length; i++){
// 把数组元素依次推入新数组,并且对比新数组是否存在改元素
// 不存在则推入新数组,存在则为重复元素,不推入
if(array.indexOf(arr[i]) === -1){
array.push(arr[i])
}
}
return array;
}

4.利用对象的属性不能相同的特点进行去重

1
2
3
4
5
6
7
8
9
10
11
12
// 该方法有局限 不能判别数字1与字符串"1" 谨慎使用
funtion unique(arr) {
var arrry= [];
var obj = {};
for (var i = 0; i < arr.length; i++) {
if (!obj[arr[i]]) {
arrry.push(arr[i])
obj[arr[i]] = 1
}
}
return arrry;
}

5.filter

1
2
3
4
5
6
unique(arr) {
return arr.filter(function(item, index, arr) {
//当前元素,在原始数组中的第一个索引==当前索引值,说明第一次出现,返回当前元素
return arr.indexOf(item) === index;
});
}

猜你喜欢

转载自www.cnblogs.com/liuzhongrong/p/12390244.html