ES6-Map与Object的区别

178 阅读2分钟

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'333console.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