数组去重

来源:互联网 发布:部队网络安全教育 编辑:程序博客网 时间:2024/06/07 08:02

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


在这里我向大家介绍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);
原创粉丝点击