• Set


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

    Set对象是值的集合,你可以按照插入的顺序迭代它的元素。 Set中的元素只会出现一次,即 Set 中的元素是唯一的。因为 Set 中的值总是唯一的,所以需要判断两个值是否相等。这和===操作符中使用的算法不同。对于 Set s,+0 (+0 严格相等于-0)和-0是不同的值。

    另外,NaNundefined都可以被存储在Set 中, NaN之间被视为相同的值(NaN被认为是相同的,尽管 NaN !== NaN)。

    静态属性

    get Set[@@species]

    构造函数用来创建派生对象.

    实例属性

    Set.prototype.size

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

    实例方法

    Set.prototype.add(value)

    Set对象尾部添加一个元素。返回该Set对象。此方法可以链式调用,例如:mySet.add(5).add('some text')。重复的值不会被重复添加。

    Set.prototype.clear()

    移除Set对象内的所有元素。返回值是undefined。

    Set.prototype.delete(value)

    移除Set中与这个值相等的元素,或者说从set对象中移除指定的(value)元素。成功删除返回 true,否则返回 false。

    Set.prototype.entries()

    entries() 方法返回一个新的迭代器对象 ,这个对象的元素是类似 [value, value] 形式的数组,value 是集合对象中的每个元素,迭代器对象元素的顺序即集合对象中元素插入的顺序。由于集合对象不像 Map 对象那样拥有 key,然而,为了与 Map 对象的 API 形式保持一致,故使得每一个 entry 的 key 和 value 都拥有相同的值,因而最终返回一个 [value, value] 形式的数组。
    var mySet = new Set();
    mySet.add("foobar");
    mySet.add(1);
    mySet.add("baz");
    
    var setIter = mySet.entries();
    
    console.log(setIter.next().value); // ["foobar", "foobar"]
    console.log(setIter.next().value); // [1, 1]
    console.log(setIter.next().value); // ["baz", "baz"]
    

      

    Set.prototype.forEach(callbackFn[, thisArg])

    按照插入顺序,为Set对象中的每一个值调用一次callBackFn,哪怕这个值是undefined。如果提供了thisArg参数,回调中的this就是这个参数。

    回调函数有三个参数:

    • 元素的值
    • 元素的索引
    • 正在遍历的集合对象

    但是由于集合对象中没有索引(keys),所以前两个参数都是Set中元素的值(values),之所以这样设计回调函数是为了和Map 以及Array的 forEach 函数用法保持一致。

    如果提供了一个 thisArg 参数给 forEach 函数,则thisArg参数将会作为回调函数中的 this值。否则 this 值为 undefined。回调函数中 this 的绑定是根据函数被调用时通用的 this 绑定规则来决定的。

    forEach 函数为集合对象中每个值都执行一次回调;它不会返回任何值。

    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"
    

      

    Set.prototype.has(value)

    返回一个布尔值,表示该(value)值在Set中存在与否。
    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条(不同引用的)对象了
    

       

    Set.prototype.values()

    返回一个新的迭代器对象,该对象包含Set对象中的(按插入顺序排列的)所有元素的值。

    Set.prototype.keys() (en-US)

      values()方法相同,返回一个新的迭代器对象,该对象包含Set对象中的(按插入顺序排列的)所有元素的值。

    Set.prototype[@@iterator]()

    返回一个新的迭代器对象,该对象包含Set对象中的按插入顺序排列的所有元素的值。
     

    Set从Function继承了.apply(), .bind(), .call(), .toString()方法

  • 相关阅读:
    LoadScript
    Mac终端Terminal调用Sublime Text
    jquery ajax 提交 FormData
    ps切图设置
    bootstrap-select搜索框输入中文
    Homebrew安装
    清空file input框
    javascript 随机数区间
    Canvas与Image互转
    html空格小结
  • 原文地址:https://www.cnblogs.com/shangsi/p/16210265.html
Copyright © 2020-2023  润新知