let arr=[1,1,2,2,3,3,3,4,4,4];
let newarr=[]
for(let i=0;i<arr.length;i++){
if(newarr.indexOf(arr[i])==-1){
newarr.push(arr[i])
}
}
console.log(newarr)//[1,2,3,4]
需要创建一个空数组;首先要知道indexOf的用法,它用来返回索引,如果数组里没有这个值,就返回-1
遍历有重复元素的数组,空数组里有没有这一项?没有就添加到空数组里,有就什么都不做;实际上就是问你有没有,没有就添加,有就什么都不做。
let arr=[1,1,2,2,3,3,3,4,4,4];
let newarr=[]
arr.forEach((val,index)=>{
if(!newarr.includes(val)){//取反为没有这一项的时候添加
newarr.push(val)
}
})
console.log(newarr)//[1,2,3,4]
原理和indexOf一样,也需要创建一个空数组,includes是检查数组里有没有这一项,它返回一个布尔值,有就是true没有就是false;
let arr=[4,3,2,1,1,2,3,4];
let newarr=[]
newarr=arr.filter(function(val,index){
//返回当前这一项的索引等于索引的值
return arr.indexOf(val) === index;
})
console.log(newarr)//[1,2,3,4]
filter是过滤,过滤符合条件的值,如果不了解请先去学习数组的各种方法,这里不再过多赘述
let arr=[4,3,2,1,1,2,3,4];
let newarr=new Set(arr)
console.log(newarr)//[1,2,3,4]
只需要了解es6的set结构就可以做到,非常的省事简单
Set
对象是值的集合,你可以按照插入的顺序迭代它的元素。Set 中的元素只会出现一次,即 Set 中的元素是唯一的。
let arr=[1,2,3,4,1,2,3,4];
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--;
};
};
};
console.log(arr)//[1,2,3,4]
原理是先拿出数组中的第一个,让第一个与所有的进行比较,如果相等就用splice方法截取掉;再拿出第二个与数组每一项进行比较,相等就截掉 以此循环......但要注意截取掉一个后,要让内层for循环里的变量减1;如果不减就会漏掉一项比较,