美文网首页
EcmaScript6巧用Set去重

EcmaScript6巧用Set去重

作者: LeeYaMaster | 来源:发表于2019-01-15 14:52 被阅读4次

    EcmaScript6提供了新的数据结构 Set,与之还有map。它类似于数组,但是成员的值都是唯一的,没有重复的值,也没有键和对。
    并且Set也是一个构造函数,用来生成 Set 数据结构。既然他的成员都是唯一的,那么我们可以通过它来做一些文章,比如数组去重:

                    const s = new Set();
                    let arr = [1, 2, 3, 4, 5, 6, 7, 2, 3];
                    arr.forEach(item => s.add(item));
                    console.log(s);//Set//展开后是[1,2,3,4,5,6,7]
    

    但是这样输出的是Set型,并不是我们想要的,我们想要的是数组。于是便有两种方法:

                    //数组去重方式1
                    let arr = [1, 2, 3, 4, 5, 6, 7, 2, 3];
                    let arrSet = [...new Set(arr)];
                    console.log(arrSet);
    

    用ES6的语法,...把它展开,再用[]包起来,所以变成了数组,这是方法1.

                    const items = new Set([1, 2, 3, 4, 5, 6, 7, 2, 3]);
                    const array = Array.from(items);
                    console.log(array);
    

    第二种方法是用Array.from来让Set转换成数组。同样可以达成目的。
    Set这么好用,我们不妨封装成一个方法?

                    function dedupe(array) {
                      return Array.from(new Set(array));
                    }
                    
                    dedupe([1, 1, 2, 3]) // [1, 2, 3]
    

    于是,一个数组去重的方法就这样完成啦~

    相关文章

      网友评论

          本文标题:EcmaScript6巧用Set去重

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