数组去重方法
1、ES6提供了新的数据结构Set,它类似于数组,但是成员的值是唯一的,没有重复的值。
let arr = [1,2,5,2,3,4,1,2,3,5,4,1,2,3,2,1,1,1,'asd','123','123','123','asd',1,true,true,false];
console.log(...new Set(arr));
或者
let arr = [1,2,5,2,3,4,1,2,3,5,4,1,2,3,2,1,1,1,'asd','123','123','123','asd',1,true,true,false];
const s = new Set();
arr.forEach(x => s.add(x));
console.log(...new Set(s));
2、
创建一个新的数组存放结果,创建一个空对象for循环时,每次取出一个元素与对象进行对比,如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性,并赋值为1,存入到第2步建立的对象中。至于如何对比,就是每次从原数组中取出一个元素,然后到对象中去访问这个属性,如果能访问到值,则说明重复。
let arr = [1,2,5,2,3,4,1,2,3,5,4,1,2,3,2,1,1,1,'asd','123','123','123','asd',1,true,true,false];
var arr_new = [];
var json = {};
for(let i=1;i<arr.length;i++) {
if(!json[arr[i]]) {
arr_new.push(arr[i] );
json[arr[i]] = 1;
}
}
console.log(arr_new)
3、构建一个新的数组存放结果,for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比。若结果数组中没有该元素,则存到结果数组中。
let arr = [1,2,5,2,3,4,1,2,3,5,4,1,2,3,2,1,1,1,'asd','123','123','123','asd',1,true,true,false];
var arr_new = [arr[0]];
for(var i=1;i<arr.length;i++) {
var repeat = false;
for(var j = 0; j < arr_new.length; j++){
if(arr[i] == arr_new[j]){
repeat = true;
}
}
if(!repeat) {
arr_new.push(arr[i]);
}
}
console.log(arr_new)
打印结果: