Set和Map

Set

ES6提供了一个新的数据结构-Set。它类似于数组,但成员值都是唯一的没有重复的值,Set本身是一个构造函数用来生成Set结构的数据。

var s = new Set([1,2,3,4,5,4,5])

s.size // 5

Set的实例属性和方法

add(value)

delete(value)

has(value)

clear()

Array.form()可以将Set结构转化成数组 ,...扩展运算符也可以

遍历操作

keys()         // 1,2,3,4

values()  //1,2,3,4

entries() //[1,1] ,[2,2].....

forEach() //用于对每个成员执行某种操作,没有返回值。

另外数组的map()和filter()方法也可以用于Set结构

WeakSet

类似于Set,但他只能存储对象类型的数据,另外他里面的对象都是弱引用

Map

ES6提供的Map数据结构很类似于Object,但不同之处在于,Object中键值只能是字符串,但Map结构中键值可以为任意类型的值包括对象。

var map = new Map([["name","Author"],["title","张三"]])

Map的键是一个简单类型的值,则只要两个值严格相等,Map就将其视为同一个键。比如+0,-0

map.set(-0,123);

map.get(-0) //123

map.set(['a'],555);

map.get(['a']) //undefined

实例属性和方法

size

set(key,value) //设置key对应的值返回整个Map结构,所以可以采用链式调用

get(key) //返回key对应的键值,没有返回undefined

has(key) 返回boolean值

delete(key)

clear()q清除所有成员

遍历的方法

keys()        

values()  

entries().

forEach() //与数组的forEach方法类似,也可以实现遍历。

let map = new Map([    ['F','no'],['T','yes' ]      ])

for(let [key,value] of map.entries()){    //for( let item of  map.entries() ){

           console.log(key, value)

}

与其他数据的转化

转成数组 [...map]

转成对象

转成JSON                a.若果键名都是字符串,则先转城对象在用JSON.stringify()转成JSON

                                 b.其他情况则先转城数组,再转成JSON串。

WeakMap

与Map结构基本类似,唯一的区别是它只接收对象作为键名。(null 除外)

你可能感兴趣的:(Set和Map)