数组去重

方法一:

for (var i = 0; i < arr1.length; i++) {
    for (var j = i+1; j < arr1.length; j++) { // 从第i+1个元素遍历数组
        // 如果当前数组元素相同
        if (arr1[i] == arr1[j]) {
            arr2.push(arr1[j]); // 把相同的元素push到数组arr2中
            arr1.splice(j,1); // 并删除更新原数组arr1
        }
    }
}

方法二:设置一个临时数组temp,然后遍历要去重的数组arr,如果arr中的元素能够在temp中找到,则跳过此元素,否则将此元素存入temp,最后返回temp。

 function unique(arr){
     var temp = [];
     var len = arr.length;
     for(var i = 0; i < len; i++){
        if(temp.indexOf(arr[i]) === -1) 
temp.push(arr[i]);
}    
     return temp;
 }

方法三:设置一个临时数组temp,然后遍历要去重的数组arr,如果arr[i]中的元素在arr中出现的第一次的位置也为i,则将其存入temp,否则跳过此元素,最后返回temp。

function unique(arr){
    var temp = [];
    var len = arr.length;
    for (var i = 0; i <len; i++){
        if(arr.indexOf([arr[i]) === i) 
temp.push(arr[i]);
    }
    return temp;
}

方法四:对要去重的数组 arr 先进行排序,这样重复的元素就排在了相邻的位置,然后对数组 arr 进行遍历,将arr[i] 与 临时数组 temp 中的最后一个元素进行比较,如果不同则将其存入临时数组,如果相同则跳过此元素,最后返回临时数组。

function unique( arr ) {
    var temp = [];
    var len = arr.length;
    arr.sort();
    temp.push(arr[0]);
    for ( var i = 1; i < len; i++ ) {
        if ( arr[i] !== temp[temp.length-1] ) temp.push(arr[i]);
    }
    return temp;
}

方法五:设置一个临时对象tempObj,然后遍历要去重的数组arr, 如果arr[i]中的元素在此对象中有标记,则跳过,否则在临时对象中进行标记,并将其存入临时数组tempArr, 最后返回tempArr。

function unique(arr){
    var tempObj = {};
    var tempArr = [];
    var len = arr.length;
    for (var i = 0; i < len; i++) {
        if ( !tempObj[arr[i]] ){
            tempObj[arr[i]] = true;
            tempArr.push(arr[i]);
        }
    }
    return tempArr;
}

方法六:将方法写在数组的原型上,这样就可以直接调用去重方法,实现去重

Array.prototype.unique1 = function()
    {
        var temp = []; // 一个新的临时数组
        for(var i = 0; i < this.length; i++) // 遍历当前数组
        {
            //判断是否临时数组中有该遍历的元素存在
            if (temp.indexOf(this[i]) == -1) {
                temp.push(this[i]); // 若不存在,则push到临时数组里面
            }
        }
        return temp;
}
  var arr=new Array(1,1,1,1,1,2,2,3,4,5,6,2,7,8,9);
   arr.unique1();
   console.log( arr.unique1())

方法七:es6的方法

const  = new Set();
[2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x));
for (let i of s) {
  console.log(i);
}
// 2 3 5 4

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值