数组去重

  // 数组去重
    // 1. filter
    this.arrs = arr.filter((item, index) =>
      arr.indexOf(item) === index
    )
    console.log('this.arrs', this.arrs) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

    // 2.es6去重  ...扩展运算符 [...set]
    let arrs = [...new Set(arr)]
    console.log('arrs', arrs) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

    // 3.indexOf
    let Arr = []
    arr.forEach(item => {
      if (Arr.indexOf(item) === -1) {
        Arr.push(item)
      }
    })
    console.log('Arr', Arr) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

var arrs = [1,3,1,4,34,1,10];

  • 利用indexOf   在新数组里查找,未找到推入一个值                                                                                                                           var res = [];
           for(var i = 0; i < arrs.length;i++){
                 var n = arrs[i];
                 if(res.indexOf(n) == -1){
                     res.push(n);
                 }
           }                                                                                                                                                                                                  console.log(res);//[1, 3, 4, 34, 10]

  • 利用lastIndexOf  查找的字符串最后出现的位置,如果没有找到匹配字符串则返回 -1                                                                              var res = [];                                                                                                                                                                                for (var i = 0; i < arrs.length; i++) {
                   var m = arrs[i];
                   res.lastIndexOf(m) != -1 ? "" : res.push(m);              
            }
           console.log(res);//[1, 3, 4, 34, 10]

  • 利用forEach和includes                                                                                                                                                                             arrs.forEach(function(item){
                  res.includes(item) ? "" : res.push(item);     
            })
            console.log(res);   

  • es6中set语法   去除数组中的重复值   [..new Set(array)]

       var set = new Set(arrs);
     console.log([...set]);//[1, 3, 4, 34, 10]       ...扩展运算符 [...set]

  • filter()去重                                                                                                                                                                                         filter()为数组提供过滤功能,它会遍历数组所有元素,并返回满足条件的元素组成的新数组filter()不会修改原数组               filter()接收的回调函数,其实可以有多个参数。通常我们仅使用第一个参数,表示Array的某个元素。回调函数还可以接收另外两个参数,表示元素的位置和数组本身                                                                                                                                      去除重复元素依靠的是indexOf总是返回第一个元素的位置,后续的重复元素位置与indexOf返回的位置不相等,因此被filter滤掉了                                                                                                                                                                               var aa = arrs.filter(function(x,index,arr){
                return arr.indexOf(x) === index;
            })
      console.log(arrs,aa);//[1, 3, 1, 4, 34, 1, 10]     [1, 3, 4, 34, 10]   

  • sort()   利用sort()排序方法,然后根据排序后的结果进行遍历及相邻元素比对                                                                                   arr = arrs.sort();
          var arry = [arr[0]];
          console.log(arr);//[1, 1, 1, 10, 3, 34, 4]    sort排序后的值
          for(var i = 1;i < arr.length;i++){
                if(arr[i] !== arr[i-1]){
                    arry.push(arr[i]);    //判断相邻元素是否一致,若不一致,向新数组arry中push
                }
            }
            console.log(arry);//[1, 10, 3, 34, 4]                                                                                                                                                                    

  • 双层for循环,利用splice去重                                                                                                                                                                for(var i = 0; i < arrs.length; i++){
                for(var j = i + 1; j < arrs.length; j++){
                    if(arrs[i] == arrs[j]){
                        arrs.splice(j,1);//双层循环,外层循环元素,内层循环时比较值。值相同时,则删去这个值
                        j--;
                    }
                }
            }
           console.log(arrs);//[1, 10, 3, 34, 4]                                                                                                                                                                                                                          

  •  

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值