zoukankan      html  css  js  c++  java
  • ES6

    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
    
  • 相关阅读:
    PHP运行模式
    Facebook揭秘HipHop项目 PHP程序大提速
    linux下django部署到apache
    流式传输的两大主流种类及流式传输特点
    深入理解php底层:php生命周期
    [转]PHP函数的实现原理及性能分析 .
    使用printk进行内核调试的方法
    探究PHP底层
    Apc缓存Opcode
    硬盘的读写原理
  • 原文地址:https://www.cnblogs.com/dagaoxiaozheng/p/6606312.html
Copyright © 2011-2022 走看看