数组去重

数组去重可谓面试题经典呢,如果能用多种方式实现的话,那么至少会给面试官留下一定的好感,觉得你的思维很广阔。


在这里我向大家介绍3种方法实现
我们在这里顶一个数组
var arr = [3,5,5,5,1,2,3,4];
方法1:
遍历数组,定义一个新的数组(newarr),用indexOf()判断是否在新的数组(newarr)中出现原数组中的每一项,如果没有出现,就push进去。代码如下:

function noRepeat(arr1){
    var newarr = [];
    for(var i=0;i<arr1.length;i++){
        //判断新的数组(newarr)中是否存在arr[i],如果没有存在,就push到新的数组中
        if(newarr.indexOf(arr1[i]) === -1){
            newarr.push(arr1[i]);
        }
    }
    //注意这里需要return
    return newarr;
}
var arr1 = [3,5,5,5,1,2,3,4];
var result1 = noRepeat(arr1);
console.log('去重后的数组',result1);
**indexOf()**
判断字符串中第一次出现的位置,返回的是位置,如果是-1的话,说明就是没有

方法2:
首先是进行排序,不需要改进版的,因为只要把相同的项排在一起就行了,然后用这一项和下一项进行比较。如果相等的话,就通过splice()方法删除。记得需要–i;不然会少比一项。
代码如下:

function noRepeat2(arr2){
    arr2.sort();
    for(var i=0;i<arr2.length;i++){
        if(arr2[i] == arr2[i+1]){
            arr2.splice(i,1);
            i--;
        }
    }
    return arr2;
}
var arr2 = [3,5,5,5,1,2,3,4];
var result2 = noRepeat2(arr2);
console.log('去重后的数组',result2);

方法3
1.通过创建一个空对象,然后遍历数组,如果对象中没有原数组中的每一项时就push到新的数组中。

function noRepeat3(arr3) {
    var json = {};
    var newarr = [];
    for(var i=0;i<arr3.length;i++){
        if(!json[arr3[i]]){
            json[arr3[i]] = true;
            newarr.push(arr3[i]);
        }
    }
    return newarr;
}
var arr3 = [3,5,5,5,1,2,3,4];
var result3 = noRepeat3(arr3);
console.log('result3',result3);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值