关于去除JS数组中的重复元素问题

例如:数组 arr=[1,2,3,1,2,4,5,6];要去除arr[]数组中相同元素(即arr[]数组元素具有单一性)。

这里主要讲述两种实现方式:一种是遍历方式实现,另一种是关联数组方式实现。
较为好理解也是较为普遍的一种方式遍历方式;代码如下:

var arr=[1,2,3,1,2,4,5,6];
function repeat1(arr){
                //遍历arr中每个元素,同创建一新的索引数组result
                for(var i=0,result=[];i<arr.length;i++){
                 //遍历result中每个元素和arr中i位置元素比较
                    for(var j=0;j<result.length;j++){
                        //如果arr中i位置的元素等于result中j位置的元素,就退出循环
                        if(arr[i]==result[j]) break;
                    }
                    //如果j走到头,说明在result中没有遇到重复的元素,就将arr[i]放入result结尾
                    if(j==result.length) 
                        result[result.length]=arr[i];
                }
                return result;
            }

这里写图片描述

方法二采用关联(hash)数组:

var arr=[1,2,3,1,2,4,5,6];
function repeat2(arr){
                //遍历arr中每个元素,声明一个关联数组,一个索引数组
                for(var i=0,hash=[],result=[];
                        i<arr.length;
                        i++){
                //用arr[i]的元素作为hash[]数组的key,去result中查找是否包含——由hash算法完成,无需遍历
                    if(hash[arr[i]]===undefined){
                        hash[arr[i]]=true;//将arr[i]加入hash
                        //将arr[i]加入result
                        result[result.length]=arr[i];
                    }
                }   
                return result;
            }

这里写图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值