什么是Map?
Map 对象保存键值对,并且能够记住键的原始插入顺序。任何值(对象或者原始值) 都可以作为一个键或一个值。
用法:
let myMap = new Map();
myMap.size//获取Map中的键值对个数
myMap.set(key,value)//向Map中添加新的键值对
myMap.get(key)//通过键查找对应的值
myMap.has(key)//判断Map中是否含有key,有返回true,没有返回false
myMap.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,没有返回false
mySet.delete(key)//从Set中移除对应数据,成功返回true,否则返回false
mySet.clear()//清除Set中的所有成员,没有返回值