美文网首页
set 以及weakSet用法

set 以及weakSet用法

作者: Amy_yqh | 来源:发表于2019-01-31 16:20 被阅读0次

    一、set的用法

    set元素只能是数组,不能是对象,并且支持定义的时候直接赋值
    ES6提供了新的数据结构Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。
    Set函数可以接受一个数组(或类似数组的对象)作为参数,用来初始化。
    // 1.set定义
    let setArr = new Set(['amy','ye']);
    console.log(setArr) //et(2) {"amy", "ye"}
    [...setArr ]//["amy", "ye"]
    
    // 2.添加元素
    setArr.add('123')
    console.log(setArr)  //Set(3) {"amy", "ye", "123"},如果添加数组里面有的元素,不添加
    
    // 3.删除指定元素
    setArr.delete('123')
    console.log(setArr)//Set(2) {"amy", "ye"}
    
    // 4.清除所有元素
    setArr.clear()
    console.log(setArr)//Set(0) {}   删除所有
    
    // 5.获取元素的个数
    console.log(setArr.size)//2
    
    //6.判断是含有某个元素
    console.log(setArr.has('amy'))/true
    
    7.利用set 对数组去重
    let array = [1,2,3,1,2] // 数组去重
    console.log([...new Set(array)])//[1, 2, 3]
    
    8.字符串去重
    console.log([...new Set('ababbc')].join(''))//
    
    9.NaN 相等
    let set = new Set();
    let a = NaN;
    let b = NaN;
    set.add(a);
    set.add(b);
    console.log(set)// Set {NaN}
    
    
    keys方法、values方法、entries方法返回的都是遍历器对象(详见
    《Iterator 对象》一章)。由于 Set 结构没有键名,只有键值(或者说键
    名和键值是同一个值),所以keys方法和values方法的行为完全一致。
    
    10.keys()遍历
    // keys() 返回键名
    for(let item of setArr.keys()){
        console.log(item)
    }
    // amy
    // ye
    
    11.values()遍历
    // 返回值
    for(let item of setArr.values()){
        console.log(item)
    }
    // amy
    // ye
    
    12.entries遍历
    for(let item of setArr.entries()){
        console.log(item)
    }
    //["amy", "amy"]
    //["ye", "ye"]
    

    二、weakSet的用法

    weakSet的元素可以是对象,不支持定义的的时候直接赋值
    
    1.weakSet定义
    let weakObj = new WeakSet({a:1111})
    console.log(weakObj)  // 这样直接赋值会报错
    // object is not iterable (cannot read property Symbol(Symbol.iterator))
    // at new WeakSet (<anonymous>)
    // // at index.js:658
    
    正确的用法:
    let weakObj = new WeakSet()
    let obj = {a:123}
    weakObj.add(obj)
    console.log(weakObj)  
    
    注意:
    let weakObj = new WeakSet()
    let obj = {a:123}
    let obj1 = {a:123}
    weakObj.add(obj)
    weakObj.add(obj1)
    console.log(weakObj)  //
    
    WeakSet {{…}, {…}}
    

    相关文章

      网友评论

          本文标题:set 以及weakSet用法

          本文链接:https://www.haomeiwen.com/subject/toyksqtx.html