• JavaScript系列之内置对象set



    一、概述

    Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。

    二、实例属性

    1、Set.prototype.size

    1.1、概述

    Size属性将会返回Set对象中元素的个数。

    1.2、描述

    size的值是一个整数,表示Set对象有多少条目。size的集合访问函数是undefined;你不能改变这个属性。

    1.3、示例

    使用size

    var mySet = new Set();
    mySet.add(1);
    mySet.add(5);
    mySet.add("some text");
    
    mySet.size; // 3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    三、实例方法

    1、Set.prototype@@iterator

    1.1、概述

    @@iterator 属性的初始值和 values 属性的初始值是同一个函数。

    1.2、语法

    mySet[Symbol.iterator];
    
    • 1

    1.3、返回值

    返回 Set iterator 函数,默认值是 values() 函数。

    1.4、示例

    for..of 使用 [@@iterator]()

    const mySet = new Set();
    mySet.add("0");
    mySet.add(1);
    mySet.add({});
    
    for (const v of mySet) {
    	console.log(v);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2、Set.prototype.add()

    2.1、概述

    add() 方法用来向一个 Set 对象的末尾添加一个指定的值。

    2.2、语法

    add(value)
    
    • 1

    2.3、参数

    • value:必需。需要添加到 Set 对象的元素的值。

    2.4、返回值

    Set 对象本身。

    2.5、示例

    const mySet = new Set();
    
    mySet.add(1);
    mySet.add(5).add("some text"); // 可以链式调用
    
    console.log(mySet);
    // Set [1, 5, "some text"]
    
    mySet.add(5).add(1);
    console.log(mySet);
    // Set [1, 5, "some text"]  // 重复的值没有被添加进去
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    3、Set.prototype.clear()

    3.1、概述

    clear() 方法用来清空一个 Set 对象中的所有元素。

    3.2、语法

    clear()
    
    • 1

    3.3、返回值

    undefined。

    3.4、示例

    const mySet = new Set();
    mySet.add(1);
    mySet.add("foo");
    
    console.log(mySet.size); // 2
    console.log(mySet.has("foo")); // true
    
    mySet.clear();
    
    console.log(mySet.size); // 0
    console.log(mySet.has("foo")); // false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    4、Set.prototype.delete()

    4.1、概述

    delete() 方法可以从一个 Set 对象中删除指定的元素。

    4.2、语法

    delete(value)
    
    • 1

    4.3、参数

    • value:将要删除的元素。

    4.4、返回值

    成功删除返回 true,否则返回 false。

    4.5、示例

    const mySet = new Set();
    mySet.add("foo");
    
    console.log(mySet.delete("bar")); // 返回 false,不包含 "bar" 这个元素
    console.log(mySet.delete("foo")); // 返回 true,删除成功
    
    console.log(mySet.has("foo")); // 返回 false,"foo" 已经成功删除
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    5、Set.prototype.entries()

    5.1、概述

    entries() 方法返回一个新的迭代器对象,这个对象包含的元素是类似 [value, value] 形式的数组,value 是集合对象中的每个元素,迭代器对象元素的顺序即集合对象中元素插入的顺序。由于集合对象不像 Map 对象那样拥有 key,然而,为了与 Map 对象的 API 形式保持一致,故使得每一个条目的 key 和 value 都拥有相同的值,因而最终返回一个 [value, value] 形式的数组。

    5.2、语法

    entries()
    
    • 1

    5.3、返回值

    一个新的迭代器对象,它包含给定 Set 中的每个元素的 [value, value] 数组,按插入顺序排列。

    5.4、示例

    const mySet = new Set();
    mySet.add("foobar");
    mySet.add(1);
    mySet.add("baz");
    
    const setIter = mySet.entries();
    
    console.log(setIter.next().value); // ["foobar", "foobar"]
    console.log(setIter.next().value); // [1, 1]
    console.log(setIter.next().value); // ["baz", "baz"]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    6、Set.prototype.forEach()

    6.1、概述

    forEach 方法会根据集合中元素的插入顺序,依次执行提供的回调函数。

    6.2、语法

    mySet.forEach(callback[, thisArg])
    
    • 1

    6.3、参数

    • callback
      为集合中每个元素执行的回调函数,该函数接收三个参数:

      • currentValue, currentKey可选
        currentValue 是正在被操作的元素。并且由于集合没有索引,所以 currentKey 也表示这个正在被操作的元素。
      • set可选
        调用当前 forEach 方法的集合对象
    • thisArg可选
      回调函数执行过程中的 this 值。

    6.4、返回值

    undefined。

    6.5、示例

    输出集合对象的内容
    以下代码依次打印集合对象的元素:

    function logSetElements(value1, value2, set) {
    	console.log("s[" + value1 + "] = " + value2);
    }
    
    new Set(["foo", "bar", undefined]).forEach(logSetElements);
    
    // logs:
    // "s[foo] = foo"
    // "s[bar] = bar"
    // "s[undefined] = undefined"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    7、Set.prototype.has()

    7.1、概述

    has() 方法返回一个布尔值来指示对应的值 value 是否存在 Set 对象中。

    7.2、语法

    mySet.has(value);
    
    • 1

    7.3、参数

    • value:必需。用以测试该值是否存在于 Set 对象中。

    7.4、返回值

    • Boolean:如果指定的值(value)存在于 Set 对象当中,返回 true;否则返回 false。

    7.5、示例

    var mySet = new Set();
    mySet.add("foo");
    
    mySet.has("foo"); // 返回 true
    mySet.has("bar"); // 返回 false
    
    var set1 = new Set();
    var obj1 = { key1: 1 };
    set1.add(obj1);
    
    set1.has(obj1); // 返回 true
    set1.has({ key1: 1 }); // 会返回 false,因为其是另一个对象的引用
    set1.add({ key1: 1 }); // 现在 set1 中有 2 条(不同引用的)对象了
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    8、Set.prototype.keys()

    8.1、概述

    keys()方法是values()方法的别名。

    8.2、语法

    keys()
    
    • 1

    8.3、返回值

    一个新的迭代器对象,按插入顺序包含给定Set中每个元素的值。

    9、Set.prototype.values()

    9.1、概述

    values() 方法按照元素插入顺序返回一个具有 Set 对象每个元素值的全新 Iterator 对象。

    9.2、语法

    mySet.values();
    
    • 1

    9.3、返回值

    按照元素插入顺序返回一个包含给定的 Set 对象中每个元素值的全新 Iterator 对象。

    9.4、示例

    var mySet = new Set();
    mySet.add("foo");
    mySet.add("bar");
    mySet.add("baz");
    
    var setIter = mySet.values();
    
    console.log(setIter.next().value); // "foo"
    console.log(setIter.next().value); // "bar"
    console.log(setIter.next().value); // "baz"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    写在最后

    如果你感觉文章不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
    如果你觉得该文章有一点点用处,可以给作者点个赞;\\*^o^*//
    如果你想要和作者一起进步,可以微信扫描二维码,关注前端老L~~~///(^v^)\\\~~~
    谢谢各位读者们啦(^_^)∠※!!!

  • 相关阅读:
    Nautilus Chain全球行分享会,上海站圆满举办
    论文解读:SlowFast Networks for Video Recognition
    057_末晨曦Vue技术_处理边界情况之强制更新和创建低开销的静态组件
    蓝牙查看接收到GIF格式的图片报错问题
    好用的翻译软件-大家都在用的互译软件
    大数据开发 hadoop集群1. 概论
    linux常用服务配置、网络配置 和 基于FTP的上传和下载的几种方式
    CentOS8服务器时间同步
    【头歌-Python】Python第二章作业(初级)
    刷题笔记之二(字符串中找出连续最长的数字串+数组中出现次数超过一半的数字+另类加法+计算糖果+进制转换)
  • 原文地址:https://blog.csdn.net/weixin_62277266/article/details/126917770