什么是Map?
Map 对象保存键值对,并且能够记住键的原始插入顺序。任何值(对象或者原始值) 都可以作为一个键或一个值。
用法:
let myMap = new Map();myMap.size//获取Map中的键值对个数myMap.set(key,value)//向Map中添加新的键值对myMap.get(key)//通过键查找对应的值myMap.has(key)//判断Map中是否含有key,有返回true,没有返回falsemyMap.delete(key)//从Map中移除对应数据myMap.clear()//清除Map中的所有元素
如何遍历Map
let myMap = new Map()myMap.keys()//返回键名的遍历器myMap.values()//返回值的遍历器myMap.entries()//返回键值对的遍历器myMap.forEach()//使用回调函数遍历每个成员for...of === for(let B of A){}//将A中的B遍历
使用 for..of 方法迭代 Map
转自MDN
let myMap = new Map();myMap.set(0, "zero");myMap.set(1, "one");for (let [key, value] of myMap) {console.log(key + " = " + value);}// 将会显示两个log。一个是"0 = zero"另一个是"1 = one"for (let key of myMap.keys()) {console.log(key);}// 将会显示两个log。 一个是 "0" 另一个是 "1"for (let value of myMap.values()) {console.log(value);}// 将会显示两个log。 一个是 "zero" 另一个是 "one"for (let [key, value] of myMap.entries()) {console.log(key + " = " + value);}// 将会显示两个log。 一个是 "0 = zero" 另一个是 "1 = one"
使用 forEach() 方法迭代 Map
let myMap = new Map();myMap.set(0, "zero");myMap.set(1, "one");myMap.forEach(function(value, key) {console.log(key + " = " + value);})//forEach提供三个参数:key、value和Map本身// 将会显示两个logs。 一个是 "0 = zero" 另一个是 "1 = one"
其他方法见MDN
什么是Set?
Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。
Map能存key、value,而Set只能存一个value。
Set中的元素只会出现一次,即 Set 中的元素是唯一的。
其实它的键和值是一样的,set.keys()===set.values()
任意两个对象都是不相同的,因为它们存储的地址不同,所以就算看着完全一样,也无法去重
let mySet = new Set();mySet.add({'name':'frank'})mySet.add({'name':'frank'})//可以两个都添加进去
let mySet = new Set();mySet.size//获取Set对象中值的个数mySet.add(value)//向Set中添加新的键值对mySet.has(value)//判断Set中是否含有value,有返回true,没有返回falsemySet.delete(key)//从Set中移除对应数据,成功返回true,否则返回falsemySet.clear()//清除Set中的所有成员,没有返回值
