美文网首页
js数组去重

js数组去重

作者: 我不叫奇奇 | 来源:发表于2017-04-21 01:08 被阅读23次

数组去重几种常用的方式:

  • 创建两个数组,每一个元素都在新数组里寻找一次,两次for循环(效率低,不推荐);
  • 使用indexOf,查找重复元素并删除,一次for循环。(推荐);
  • 引申,为Array拓展新方法。(推荐)
  • 定义去重数组,用call调用。 (推荐)
  • es6的set方法(推荐)

两次for循环:

    var arr = [1,2,3,4,1,2,5,3,6,4,7,9,3,2,4,9,1,1];
    var newArr = [];
    for(var i=arr.length-1;i>=0;i--){
        for(var j=0;j<=newArr.length;j++){
            if(arr[i]==newArr[j]){
                break;
            }else if(j==newArr.length){
                newArr.push(arr[i])
                break;
            }
        }
    }
    console.log(newArr);//Array [ 1, 2, 3, 4, 5, 6, 7, 9 ]

使用indexOf:

   var arr = [1,2,3,4,1,2,5,3,6,4,7,9,3,2,4,9,1,1];
   for(var i = 0;i<arr.length;i++){
        while((a = arr.indexOf(arr[i],i+1)) != -1){
            arr.splice(a,1);
        }
    }
    console.log(arr);//Array [ 1, 2, 3, 4, 5, 6, 7, 9 ]

为Array拓展:

    var arr = [1,2,3,4,1,2,5,3,6,4,7,9,3,2,4,9,1,1];
    Array.prototype.disrepeat = function(){
        var newArr = [];
        for(var i = 0;i<this.length;i++){
            if(newArr.indexOf(this[i])==-1){
                newArr.push(this[i]);
            }
        }
        return newArr;
    }
    var result = arr.disrepeat();
    console.log(result);//Array [ 1, 2, 3, 4, 5, 6, 7, 9 ]

用call调用:

    function disrepeat(){
        var newArr = [];
        for(var i = 0;i<this.length;i++){
            if(newArr.indexOf(this[i])==-1){
                newArr.push(this[i]);
            }
        }
        return newArr;
    }
    var result = disrepeat.call(arr);
    console.log(result);//Array [ 1, 2, 3, 4, 5, 6, 7, 9 ]

es6的set方法

  //plan A
  let arr = [1,2,3,4,2,3,2,3]
  function disrepeat(arr) {
    return [...new Set(arr)]
  }
  console.log('arr',disrepeat(arr))// arr [1,2,3,4]
  // plan B
  let arr2 = [2,3,3,2,1,3,4,5,1,3]
  function disrepeat2(arr){
    return Array.from(new Set(arr)).sort()
  }
  console.log('arr2',disrepeat2(arr2))// arr2 [1,2,3,4,5]

相关文章

  • 数组的去重和数组中对象的去重

    数组中对象去重 方式1 jq方式 方式2 原生js方式 普通数组的去重 方式1 普通的数组去重js 方式2 Se...

  • js数组去重、对象数组去重

    普通数组去重 一、普通数组去重 方法一:遍历数组法 方法二:排序法 方法三:对象法 对象数组去重 方法一:将对象数...

  • js数组去重

    Set结构去重 ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 向 Se...

  • JS数组去重

    方法1:两层for循环,外层循环原数组,内层循环时进行比较。 方法2:利用对象的属性不能相同的特点去重 方法3:利...

  • js数组去重

  • js数组去重

    1.利用对象的属性唯一性去重 2.利用es6的Set

  • js数组去重

  • js 数组去重

  • JS数组去重

    方法一:遍历数组,建立新数组,利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组 ...

  • js数组去重

    方法一 (es6 set方法,简单粗暴) 方法二 创建空数组,用indexOf方法检索,没有的话插入新数组中 方...

网友评论

      本文标题:js数组去重

      本文链接:https://www.haomeiwen.com/subject/tkmrzttx.html