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 除外)