美文网首页
数组去重 ‘古’与‘今’

数组去重 ‘古’与‘今’

作者: 宇少_e010 | 来源:发表于2019-11-25 14:48 被阅读0次

    第一种,就是很普通的思维,比如,对于[1,2,2,3,3,3,4,4,4,4]这个数组来说,我们的思路就是,新建一个空的数组,然后对这个要处理的数组做遍历,遍历的每一项都会问一下新数组:“你有没有存过我啊?”,存过(新数组.indexOf(i)>0),那么就不再存了;没存过(新数组.indexOf(i)==-1),就存进去。所以就有了如下代码:

       var arr = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4];
         (function (arr){
              newArr=[];
           for(let i=0; i<arr.length;i++){
            if(newArr.indexOf(arr[i])==-1){
              newArr.push(arr[i])
            }
           }
         })(arr)
         console.log(newArr)
    

    在这里,我用一个自执行的匿名函数对数组做了个遍历,由于newArr是一个全局变量,在执行后不会被销毁,而是返回出去,最后打印的结果正是[1,2,3,4];

    es6中有一种结构叫set,它天生就自带互异性,就是说肯定不会有重复的,看一段代码就知道了。

       var arr = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4];
          var s = new Set(arr);//结果为Set{1,2,3,4}
          var newArr = Array.from(s);//把这个类数组对象转为真正的数组
          console.log(newArr);
    

    在第一行代码中就已经得到了一个无重复的类数组对象,而Array.from的作用正是把一个类数组对象(比如平常我们用document.getElementsByTagName获取到的元素集合就是类数组对象)转变为真正的对象。

    相关文章

      网友评论

          本文标题:数组去重 ‘古’与‘今’

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