ES6 - Set

Set对象允许你存储任意类型的唯一值(不能重复),无论它是原始值或者是对象引用。

1.创建Set实例的两种方法

    //1.
    var sset = new Set();
    sset.add('one');
    sset.add(2);
    sset.add('three');
    //...    

    //2.
    var sset= new Set(['one', 2, 'three']);

2.指的相等

值的相等规则:NaN 是与NaN是相同的(虽然NaN !== NaN),除此之外所有的值都根据'==='判断。

    var sset= new Set();
    sset.add(Number('aa111'));
    sset.add(Number('bb222'));
    sset.add('cc333'));
    //Set {NaN, "cc333"}

3.Set属性

  • Set.length 属性length的值为0。

  • Set.prototype 表示Set构造器的原型。允许向所有Set对象添加新的属性。

4.Set实例 - 所有Set对象的实例都会继承Set.prototype。

属性

  • Set.prototype.constructor 返回创建给set实例的构造函数,默认是Set函数。

  • Set.prototype.size 返回Set对象的键值对的数量。

    var sset = new Set(['one', 'two', 'three']);
    console.log(sset.constructor); //function Set() { [native code] }
    console.log(sset.size); //3

方法

    var sset = new Set('one', 'two', 'three');

1.Set.prototype.add(value) 在Set对象尾部添加一个元素。返回该Set对象。

    sset.add('four');
    console.log(sset);    //Set {"one", "two", "three", "four"}

2.Set.prototype.clear() 移除Set对象内的所有元素。

    sset.clear();
    console.log(sset.size);    //0

3.Set.prototype.delete(value) 移除Set的中与这个值相等的元素,返回Set.prototype.has(value)在这个操作前会返回的值(即如果该元素存在,返回true,否则返回false)。Set.prototype.has(value)在此后会返回false。

    console.log(sset.has('one'));    //true
    sset.delete('one');
    console.log(sset.has('one'));    //false

4.Set.prototype.entries() 返回一个新的迭代器对象,该对象包含Set对象中的按插入顺序排列的所有元素的值的[value, value]数组。为了使这个方法和Map对象保持相似, 每个值的键和值相等。

5.Set.prototype.forEach(callbackFn[, thisArg]) 按照插入顺序,为Set对象中的每一个值调用一次callBackFn。如果提供了thisArg参数,回调中的this会是这个参数。

    sset.forEach(function(value, key, setObj) {
        console.log(value + '---' + key + '---' + setObj);
        //value - Set对象里每一个键值对的值
        //key - Set对象里每一个键值对的键 === 值
        //mapObj - Set对象本身
        console.log(this); //this === window
    });

    sset.forEach(function(value, key, setObj) {
        console.log(value + '---' + key + '---' + setObj);
        console.log(this);    //this === sset
    }, sset)

6.Set.prototype.has(value) 返回一个布尔值,表示Map实例是否包含键对应的值。

    sset.has('one'); // true
    sset.has('fivr'); //false

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

    sset.keys();    //SetIterator {"one", "two", "three"}

8.Set.prototype.values() 返回一个新的Iterator对象,它按插入顺序包含了Map对象中每个元素的值。

    sset.values(); //SetIterator {"one", "two", "three"}

5.使用for..of方法迭代映射

    var sset = new Set();
    sset.add(1);
    sset.add(2);
    for (var value of sset) {
        console.log(value);
    }
    // 1 2
    
    for (var key of sset.keys()) {
        console.log(key);
    }
    // 1 2
    
    for (var value of sset.values()) {
        console.log(value);
    }
    // 1 2

转载于:https://www.cnblogs.com/dagaoxiaozheng/p/6606312.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值