①set是一系列无序(因为set没有下标(索引号))、没有重复值的数据集合(数组有序)。不可以用字面量的形式创建,只能用实例化形式创建

②方法和属性

//1.方法
        //add()添加成员
        const s = new Set();
        s.add(1).add(2).add(3);
        console.log(s); // {1, 2, 3}
        //has()判断是否有某个成员
        console.log(s.has(1)); // true
        console.log(s.has(4)); // false
        //delete()删除某个成员,当删除不存在的成员时,什么都不会发生也不会报错
        const a = s.delete(1)
        console.log(s); // {2, 3}
        //clear()清除所有成员
        const b = s.clear();
        console.log(s); // {}
        //forEach(function(value,key,set){}, this指向)遍历set
        //第一个参数是回调函数,回调函数里面的value代表每一个成员,key,在set里没啥用(value=key),set就是实例本身
        //第二个参数,是this的指向。
        const c = s.forEach(function(value, key, set) {
            console.log(value, key, set);
            // 第一次迭代    1 1  {1, 2, 3}
            // 第二次迭代    2 2  {1, 2, 3}
            // 第三次迭代    3 3  {1, 2, 3}
            console.log(this); // 一般函数的this指向的是window
        });
        const d = s.forEach((value, key, set) => {
            console.log(value, key, set);
            console.log(this); // this指向window
        });
        //2.属性只有一个  size表示成员的个数
        console.log(s.size); //属性不能添加圆括号()

③set构造函数的参数,不能直接传递数值

//1.数组
        const s = new Set([1, 2, 1]);
        console.log(s); // {1, 2}
        //2.字符串
        console.log(new Set('hello')); // {'h', 'e', 'l', 'o'}
        //3.arguments
        function fun() {
            console.log(new Set(arguments)); // {1, 2}
        };
        fun(1, 2, 1);
        //4.NodeList
        console.log(new Set(document.querySelectorAll('p'))); // {p}
        //5.set
        console.log(new Set(s)); // {1, 2}

④set的注意事项

Set对重复值的判断基本遵循严格相等(===),但是对于NaN的判断与===不同,set中NaN等于NaN。

⑤set的使用:数组或者字符串去重时;不需要下标访问,只需要遍历时;为了使用set提供的方法和属性时

⑥set的应用

//1.数组去重
        const s = new Set([1, 2, 1]);
        // console.log(...s); // 1 2
        console.log([...s]); //  [1, 2]
        console.log('****************************');
        let arr = [];
        s.forEach(function(a) {
            arr.push(a);
        });
        console.log(arr);
        console.log('****************************');
        //2.字符串去重
        const str = 'abbbcccdeffff';
        const s1 = new Set(str);
        console.log(s1); // {'a', 'b', 'c', 'd', 'e', 'f}
        console.log(...s1); // a b c d e f
        console.log([...s1]); // ['a', 'b', 'c', 'd', 'e', 'f']
        console.log([...s1].join('')); // abcdef
        //3.存放DOM元素
        const m = new Set(document.querySelectorAll('p'));

更多推荐