1、数组去重我们想的的就是冒泡法。每一个都和后面的相比较。相同就去掉不同继续。
var array1 = [1, 1, 1, 2, 3, 2, 4];
for(var i=0;i<array1.length;i++) {
for(j=i+1;j<array1.length;j++){
if(array1[i]==array1[j]){
array1.splice(i,1);
i--;//删除一个以后,这个i之后的所有下标都减去了1.
}
}
}
console.log(array1);
结果是
2、如果使用forEach也可以.这个es5的写法
var array1 = [1, 1, 1, 2, 3, 2, 4];
var tmpObj = {};
var result = [];
array1.forEach(function(a) {
var key = (typeof a) + a;
if (!tmpObj[key]) {
tmpObj[key] = true;
result.push(a);
}
});
console.log(result)
3.使用es6的set 和Array.from结合起来就能实现
es6使用Set
数据结构,类似于数组,但是 它的成员都是唯一的 ,其构造函数可以接受一个数组作为参数
let array = [1, 1, 1, 1, 2, 3, 4, 4, 5, 3];
let set = new Set(array);
console.log(set)
得到的是一个对象。然后使用
Array.from
,可以把类似数组的对象转换为数组,
let array = [1, 1, 1, 1, 2, 3, 4, 4, 5, 3];
let set = new Set(array);
let newArray=Array.from(set)
console.log(newArray);
最后的结果是数组啦。
还可以使用...像这样的运算符来写
let array = [1, 1, 1, 1, 2, 3, 4, 4, 5, 3];
var a=[...new Set(array)];
console.log(a);