set/ weakset/ map/ weakmap

set

set是ES6中一个新的数据结构,set的使用和数组是类似的,区别就是,set里没有重复项

 

使用

let set = new Set([13,3,4,5])
set.add(3)
// 获取set中值的时候,需要先转成数组在取获取
// set里的元素是不会重复的

常用的api

  • add
  • delete
  • has
  • clear

 

size

set里由size属性,可以获取set的长度

 

 

set的遍历

可以通过forEach遍历set。 set里的key和value是一样的

 

script>
    var set = new Set([1, 2, 1, 3, 5, 2, 3, 4, 5, 3, 6, 7, 6])

    //set.add()  添加
    console.log(set.add(8))
    //set.delete()  删除
    console.log(set.delete(7))  //true
    console.log(set)
    // set的长度
    console.log(set.size)   //7
    // set.has()   有就返回true  没有返回false
    console.log(set.has(7))  //false
    //set.clear()  清空


    //遍历器
    console.log(set.entries())
    let iterator = set.entries()
    
    console.log(iterator.next())
    console.log(iterator.next())
    console.log(iterator.next())
    console.log(iterator.next())
    console.log(iterator.next())
    console.log(iterator.next())
    console.log(iterator.next())
    console.log(iterator.next())
    console.log(iterator.next())


    //forEach
    set.forEach(item=>{
        console.log(item)
    })
</script>

 

weakset

创建

new WeakSet()

weakset中的每一项都是引用类型

  • add
  • delete
  • has
  • clear

 

<script>
    //引用类型
    let weakset = new WeakSet([{'name':'zs'},{'age':15}])
    console.log(weakset)
</script>

  Map 

存储键值对的

let map = new Map([[key,value],[key2,value2]])

map.set(key,value)
map.get(key)
map.delete(key)
map.has(key)
map.clear()
// map中key可以是任意的属性,比如数字、字符串、对象、bool...

遍历map

map.forEach((value,key)=>{
    
})
<script>
    let map = new Map([['key', '这是一个键值'], ['name', '寒霜']])
    console.log(map)
    console.log(map.get('key'))
    console.log(map.get('name'))
    //键也可以是数字
    //set()
    map.set('3', '123')
    console.log(map.get('3'))
    //键也可以是boolean
    map.set(true, '4656')
    console.log(map.get(true))
    //键也可以是对象
    let obj = { 'name': 'ws' }
    map.set(obj, '键也可以是对象')
    console.log(map.get(obj))
    // 键也可以是symbol
    let symbol = Symbol('')
    map.set(symbol, '键也可以是symbol')
    console.log(map.get(symbol))
    console.log(map.size)
    map.delete(symbol)
    console.log(map.get(symbol))
    console.log(map.has(obj))  //true
    //map.clear()清空

    // 遍历器
    // map.entries()
    let map1 = new Map();
    map1.set('键1', '值1')
    map1.set('键2', '值2')
    map1.set('键3', '值3')
    map1.set('键4', '值4')
    map1.set('键5', '值5')
    map1.set('键6', '值6')
    console.log(map1.entries())
    map1.forEach((value,key)=>{
        console.log(value+'=>key是:'+key)
    })
</script>

WeakMap

WeakMap的键只能是引用类型

new WeakMap()

  • set
  • get
  • delete
  • has
  • clear

 

<script>
    //weakmap 的key 只能是引用类型
    let weakmap = new WeakMap([[{'name':'zsx'},'value']]);
    console.log(weakmap)    
</script>

  

原文地址:https://www.cnblogs.com/guirong/p/13611150.html