数组去重

<> ES6中Set方法
  该方法是效率更高,代码简单,思路清晰,缺点是可能会存在兼容性问题。

function clearRepeat(arr) {
            //ES6中还对Array新增了一个静态方法Array.from(),可以把Set集合转化成数组形式。
            //ES6中新增的扩展运算符,可以强制Set集合类型转换成数组。
            return [...new Set(arr)];
        }
        let array = clearRepeat([1, 2, 3, 4,3, 2, 1]);
        console.log(array);

<> 利用对象的属性不能相同的特点进行去重
  该方法优点是效率较高,缺点是占用了较多空间,使用了的额外空间查询对象和一个新的数组。

var arr = [0,1,2,3,4,3, 2, 1];
            function fun(arr) {
                var newBrr = [];
                var obj = {};
                for (var i = 0; i < arr.length; i++) {
                    if (!obj[arr[i]]) {
                        obj[arr[i]] = 'abc';
                        newBrr.push(arr[i]);
                    }
                }
              return newBrr
            }
          var newArr=fun(arr);
            console.log('newArr', newArr);

<> 利用过滤器filter和indexOf方法
  该方法是可以在去重的时候插入对元素的操作,可拓展性强,但是去重时所耗的时间要比前面2种方法要长。

 var brr = [0, 0, 1, 2, 3, 4, 5, 5];
        function fun(arr) {
            return arr.filter((num, index) => {
                return arr.indexOf(num) === index;
            });
        }
        console.log(fun(brr));

posted @ 2021-01-28 20:52  简单的事情重复做  阅读(88)  评论(0)    收藏  举报