文章目录
JS数组去重的几种方法
去重 顾名思义就是去掉重复的元素。
1.用双循环来配合数组的方法splice实现去重
示例:
var arr=[1,6,3,6,3,1,1,1,19,1,9,8,8,1,3,23,5,6,7,9,9,8,5]
function eliminate(arr){
for(var i=0;i<arr.length-1;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i]==arr[j]){//比较下标
arr.splice(j,1);//去重
j--//每删除一个,长度也在减少
}
}
}
return arr;
}
arr2=eliminate(arr);
console.log(arr2);//去重后的数组
2.用数组的方法indexOf配合方法splice实现去重
借助indexOf()方法判断此元素在数组中首次出现的位置下标与循环的下标是否相等。
indexOf()判断的是指定的字符在字符串中首次出现的位置。
示例:
var ar=[1,6,3,6,3,1,1,1,19,1,9,8,8,1,3,23,5,6,7,9,9,8,5]
function eliminate(arr){
for(var i=0;i<arr.length;i++){
//arr.indexOf(arr[i]) 首次出现的位置
//i 索引[下标]
if(arr.indexOf(arr[i]) !=i){
//删除数组元素后数组长度减一后面的元素前移
arr.splice(i,1);
//数组下标回退
i--;
}
}
return arr;
}
var a1=eliminate(ar);
console.log(a1)
3.用数组的方法indexOf配合方法push实现去重
push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
示例:
var arr=[1,6,3,6,3,1,1,1,19,1,9,8,8,1,3,23,5,6,7,9,9,8,5];
console.log(arr);
function eliminate(arr){
var ret=[];//空数组[存放不重复的数值]
for(var i=0;i<arr.length;i++){
if(arr.indexOf(arr[i]) == i){ //代入:i=0
ret.push(arr[i])
console.log(ret);//观察ret动态
}
}
return ret
}
arr2=eliminate(arr);
console.log(arr2)
4. 利用对象属性存在的特性实现去重
示例:
var arr=[1,6,3,6,3,1,1,1,19,1,9,8,8,1,3,23,5,6,7,9,9,8,5];
var x={};//空对象
var new_arr=[];//空数组
for(var i=0;i<arr.length;i++){
var k=arr[i];//代入法:i=2 k=1
if(!x[k]){//!x[1] !取反用于将布尔值变成相反值,即true变成false,false变成true
x[k]=true
new_arr.push(k)
}
}
console.log(new_arr);
5. 利用ES6的filter方法实现去重
示例:
var arr=["LiHua","LiLei","HanMeiMei","XiaoMing","HanMeiMei","HanMeiMei","XiaoHong","LiLei"]
var r=arr.filter(function(element,index,self){//element 元素 index 索引 self 数组 filter过滤的意思
return self.indexOf(element)===index;//固化语法,分装好的框架。在数组里去找这个元素,如果后面有与这个元素相同的索引号就去除
})
console.log(r)
写在最后
✨ 这 片 绿 茵 从 不 缺 乏 天 才 , 努 力 才 是 最 终 的 入 场 券 。 \textcolor{skyblue}{这片绿茵从不缺乏天才,努力才是最终的入场券。} 这片绿茵从不缺乏天才,努力才是最终的入场券。
👍 您 的 点 赞 是 我 前 进 的 动 力 ! \textcolor{green}{您的点赞是我前进的动力!} 您的点赞是我前进的动力!
⭐️ 您 的 收 藏 是 我 努 力 的 方 向 ! \textcolor{green}{ 您的收藏是我努力的方向!} 您的收藏是我努力的方向!
✏️ 您 的 评 论 是 我 进 步 的 源 泉 ! \textcolor{green}{您的评论是我进步的源泉!} 您的评论是我进步的源泉!