js之数组去重的方法

数组去重?即去除数组中重复的元素...

首先第一种方法就是利用set集合的特性实现去重(其实set用法很多,有兴趣的可以多去了解下);

  那什么是set集合呢?set集合是一种新的数据存储格式;

  set语法:new Set()

    参数:一个数组

set集合可以称为史上最快的一种去重方式,如下:

var arr = [1, 2, 3, 4, 5, 5, 4, 3, 2, 1 ];
var set = new Set(arr);
console.log(set)

第二种方法则是先封装好一个函数判断数组中是否存在某个值,然后再利用这个原理进行数组去重;代码如下:

//判断数组中是否存在某个值
function has(arr, n){
    var bStop = false;
    for(var i in arr){
        if(arr[i] == n){
            bStop = true;
            break;
        }
    }
    return bStop;
}
function norepeat2(arr){
    var newArr = [];
    for(var i in arr){
        if(!has(newArr, arr[i])){
            newArr.push(srr[i])
        }
    }
    return newArr;
}

第三种方法呢,则是利用es5中新增的方法indexOf去重;

  indexOf()作用:判断某个字符是否存在。如果存在,则返回相对应的下标,不存在则返回-1;

  究竟怎么实现呢,相信小可爱们都已经想到了~代码如下:

function norepeat3(arr){
    //创建好一个新的数组
    var newArr = [];
    //循环遍历arr
    for(var i in arr){
        //判断新数组,如果不存在arr的第i个,不存在则添加到新数组当中
        if(newArr.indexOf(arr[i]) == -1){
            newArr.push(arr[i])
        }
    }
    return newArr
}

第四种方法则利用sort排序,创建一个新的数组然后传入原数组的第0个;循环遍历的时候要注意i的初始值从1开始。代码如下:

Array.prototype.norepeart4 = function(){
    //先排序
    this.sort();
    //创建一个新的数组并存入数组的第0个
    var newArr = [this[0]];
    //循环遍历传入的数组
    for(var i = 1;i<this.length;i++){
        //利用每个新数组中值与传入数组的第i个进行计较,不存在则push到新数组中
        if(newArr[newArr.length-1] != this[i]){
            newArr.push(this[i])
        }
    }
    //返回新的数组
    return newArr;
}

只有想不到没有写不出!数组去重的方法很多很多,在这里就简单的列举四种。望大家喜欢(嘻嘻)

原文地址:https://www.cnblogs.com/wantu/p/9059656.html