ES6-Map与Object的区别
Map
Map对象保存键值对。任何值(包括所有类型的对象和原始值)都可以作为一个键或一个值。构造函数Map可以接受一个数组作为参数
Map与Object的区别
- Map中的键值是有序的,而添加到对象中的键则是无序的
- Object的遍历有一些限制,它仅仅遍历可枚举属性、非Symbol属性,并且遍历的顺序是任意的。但Map可直接遍历,且因为它是键值对集合,所以可直接使用for…of或forEach来遍历。这点不同的优点是为你的程序带来更高的执行效率。
- Map的键值对个数可以从size属性获取,而Object的键值只能手动计算
- Object有自己的原型,可能会出现命名冲突
map对象的属性与方法
-
size:返回Map对象中所包含的键值对个数
-
set(key, val): 向Map中添加新元素
-
get(key): 通过键值查找特定的数值并返回
-
has(key): 判断Map对象中是否有Key所对应的值,有返回true,否则返回false
-
delete(key): 通过键值从Map中移除对应的数据
-
clear(): 将这个Map中的所有元素删除
set方法
let myFavoriteCP= new Map();
myFavoriteCP.set(1, 'wlkt');
myFavoriteCP.set([1],wlkt');
myFavoriteCP.set({1:2},wlkt');
console.log(myFavoriteCP
get方法
let myMap = new Map();
myMap.set('a',333)
console.log(myMap.get('a')) //333
has方法
let myMap = new Map();
myMap.set('a',333)
console.log(myMap.has('a')) //true
delete方法
let myMap = new Map();
myMap.set('a',333)
myMap.delete('a')
console.log(myMap.has('a')) //false
clear方法
let myMap = new Map();
myMap.set('a',333)
myMap.clear()
console.log(myMap.size) //0
遍历方法
keys():返回键名的遍历器values():返回键值的遍历器entries():返回键值对的遍历器forEach():使用回调函数遍历每个成员
const map = new Map([['a', 1], ['b', 2]])
for (let key of map.keys()) {
console.log(key)
}
// "a"
// "b"
for (let value of map.values()) {
console.log(value)
}
// 1
// 2
for (let item of map.entries()) {
console.log(item)
}
// ["a", 1]
// ["b", 2]
// 或者
for (let [key, value] of map.entries()) {
console.log(key, value)
}
// "a" 1
// "b" 2
// for...of...遍历map等同于使用map.entries()
for (let [key, value] of map) {
console.log(key, value)
}
// "a" 1
// "b" 2