JS数组去重的多种方法

27 篇文章 0 订阅
6 篇文章 0 订阅

JS数组去重的多种方法

解决方案:
1、依次拿出数组中的每一项(排除最后一项,最后一项后面没有需要比较的内容)
2、和当前拿出项后面的每一项依次比较
3、如果发现有重复的,我们把找到的这个重复向在原有数组中删除掉

方案一:双重for 循环

var ary = [1,2,3,2,2,7,9,2,3,5,2,8]
for(var i =0; i<ary.length-1;i++){	
	for(var j=i+1;j<ary.length-1;j++){
		if(ary[i]===ary[j]){
			ary.splice(j,1)	//第一个等同于第二个,splice方法删除第二个
			j--; //因为splice会导致索引进一,从而导致数组塌陷
		}
	}
}
//但这种方法占用的内存较高,效率也是最低的

方案二:利用sort()
首先使用 sort() 将数组进行排序

然后比较相邻元素是否相等,从而排除重复项

var ary = [1,2,3,2,2,7,9,2,3,5,2,8];
ary = ary.sort();
var newary = [ary[0]]; //第一位首先给它赋值因为第一位不放循环里面
for(var i=1; i<ary.length;i++){
	if(ary[i] !== ary[i+1]){
		newary.push(ary[i])
	}
}

方案三:new Set()
ES6 新增了 Set 这一数据结构,类似于数组,但 Set 的成员具有唯一性

基于这一特性,就非常适合用来做数组去重了

var ary = [1,2,3,2,2,7,9,2,3,5,2,8];
Array.from(new Set(ary))

方案四:利用递归去重

function unique(arr) {
        var array= arr;
        var len = array.length;

    array.sort(function(a,b){   //排序后更加方便去重
        return a - b;
    })

    function loop(index){
        if(index >= 1){
            if(array[index] === array[index-1]){
                array.splice(index,1);
            }
            loop(index - 1);    //递归loop,然后数组去重
        }
    }
    loop(len-1);
    return array;
}
var ary = [1,2,3,2,2,7,9,2,3,5,2,8];
console.log(unique(ary ))

方案五:利用对象的属性不能相同的特点进行去重

var ary = [1,2,3,2,2,7,9,2,3,5,2,8];
var obj = { }; //创建一个空对象
for(var i=0;i<ary.length;i++){
	var item = obj[i]
	if(!obj[item]){
		ary[i] === ary[ary.length-1]
		ary.length--;
		i--;
		continue;
	}
	obj[item] = item;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值