var arr = ['a', 'b', 'c', 'a', 'b', 1, 2, 4, 6, 3, 3, 3];
1. 首先想到的是es6的Set;
new之后生成的是一个去重之后的对象;

然后使用数组的from(想要转换成数组的伪数组对象或可迭代对象)即可;
console.log(Array.from(new Set(arr)));
2. 使用slice截取(slice进行截取,所以是一个和其他的比,除了自身,二层循环从第二个开始,然后比的都是某个和后面的进行比较;如果相等,就可以减去,这样的话再次循环的下标数也需要减少)
for(var i=0;i
for(var j=i+1;j
if(arr[i] == arr[j]){
arr.splice(j,1)
i--;
}
}
}
3. 使用indexof(判断新的数组是否有这个变量)
var newarr3 = [];
arr.forEach((i) =>{
if(newarr3.indexOf(i) == -1){
newarr3.push(i)
}
});
console.log(newarr3);
4. 利用sort(这个方法是用来排序的,先对数组进行排序,然后将新的数组先赋值第一个,之后遍历,判断是否当前这个和新数组中的前一个一样,然后进行添加)
arr.sort();
var newarr4 = [arr[0]];
for(var i=1;i<arr.length;i++){
if(arr[i] !== newarr4[i-1]){
newarr4.push(arr[i])
}
}
console.log(newarr4)
5. 利用includes(是否包含这个元素)
var newarr5 = [];
for(var i=0;i<arr.length;i++){
if(!newarr5.include(arr[i])){
newarr5.push(arr[i]);
}
}
6. 使用filter,indexOf(filter进行遍历,遍历数组,参数是:值,下标,数组,遍历之后,筛选的条件,判断某个值的下标是否有和当前的下标一样,要是一样说明是第一个,不一样就是重复了,也就不会返回数组中)
var newarr6 = arr.filter((i,index,arr) =>{
return arr.indexOf(i,0) == index
})
7. 利用递归:sort,splice
方法一:(先把数组进行排序,然后从最后一个{传入的下标}开始向前 执行函数,如果传入的下标是第一个说明递归结束,否则,判断当前的和前一个是否相等,相等的话使用splice截取,否则递归调用前一个)
var newarr7 = arr;
var len = newarr7.length;
newarr7.sort();
function loop(index){
if(index>1){
if(newarr7[index] === newarr7[index-1]){
newarr7.splice(index,1)
}
loop(index-1)
}
}
loop(len-1);
console.log(newarr7)
方法二:(和上面一样不过这个是从偶开始,但是需要传入数组的长度,还是上面比较好一点)
var newarr7 = arr;
var len = newarr7.length;
newarr7.sort();
function loop(index, len) {
if (index < newarr7.length - 1) {
if (newarr7[index] === newarr7[index + 1]) {
newarr7.splice(index, 1)
}
loop(index + 1, newarr7.length)
}
}
loop(0, len);
console.log(newarr7)
8. 利用map(map对象,存储对象的,判断是否有这个值,有进行储存为true,否则储存为false)
var map = new Map();
var newarr8 = new Array();
for(var i=0;i
if(map.has(arr[i])){
map.set(arr[i],true)
}else{
map.set(arr[i],false);
newarr8.push(arr[i])
}
}
console.log(newarr8)
注:
var map = new Map();
console.log(map)

var newarr8 = new Array();
for(var i=0;i
if(map.has(arr[i])){
map.set(arr[i],true)
}else{
map.set(arr[i],false);
newarr8.push(arr[i])
}
}
console.log(map)

console.log(newarr8)