让前端飞

js手写数组去重

2019-02-13  本文已影响4人  tcz520

javascript数组中若存在重复元素,此时我们需要将重复的元素去除,下面我讲介绍一下几种方法进行数组元素去重

一.  临时数组法

新建一新数组,遍历要去重的数组,将值一一插入新数组中,若已存在此元素,则跳过。

function uniqArray(array){

    var temp = [];  // 一个新的临时数组

    for(var i = 0; i < array.length; i++){

        if(temp.indexOf(array[i]) == -1){

            temp.push(array[i]);

        }

    }

    return temp;

}

二.  数组下标法

如果当前数组的第i项在当前数组中第一次出现的位置不是i, 那么表示第i项是重复的,忽略掉。否则存入结果数组。此方法还是得调用“indexOf”性能跟方法1差不多。

function uniqArray(array){

    var temp = [];

    for(vari = 0; i < array.length; i++) {

        // 如果当前数组的第i项在当前数组中第一次出现的位置是i,才存入数组;否则代表是重复的

        if(array.indexOf(array[i]) == i){

            temp.push(array[i])

        }

    }

    return temp;

}

三.  排序后相邻去除法

给传入数组排序,排序后相同值相邻,然后遍历时,新数组只加入不与前一值重复的值。会打乱原来数组的顺序。

function uniqArray(array){

    array.sort();

    var temp=[array[0]];

    for(vari = 1; i < array.length; i++){

        if( array[i] !== temp[temp.length-1]){

            temp.push(array[i]);

        }

    }

    return temp;

}

上一篇下一篇

猜你喜欢

热点阅读