Map 和 Object的主要区别
Map 用来存储键值对结构的数据(key-value), Object 中存储的数据就可以认为是一种键值对结构。
- Object中 的属性名只能是字符串或符号,如果传递了其他类型的属性名,JS 会自动将其转换为字符串。
- Map中任何类型的值都可以称为数据的key 。
const obj = {
"name":"孙悟空",
"age":18,
[Symbol()]:"哈哈",
[obj2]:"嘻嘻" // obj2 is not defined
}
Map的使用
- 创建:
- new Map( )
- 属性和方法
- map.size( ) 获取map中键值对的数量
- map.set(key,value) 向map中添加键值对
- map.get(key) 根据key获取值
- map.delete(key) 删除指定数据
- map.has(key) 检查是否包含指定键
- map.clear( ) 删除全部键值对
- map.keys( ) 获取map的所有key
- map.values( ) 获取map的所有的value
const map = new Map()
map.set("name", "孙悟空")
map.set(NaN, "哈哈哈")
console.log(map) // {'name' => '孙悟空', NaN => '哈哈哈'}
map.size() // 2
map.get(NaN) // '哈哈哈'
map.has(NaN) // true
将map转换为数组
const map = new Map()
map.set("name", "孙悟空")
map.set("age", 18)
//第一种
const arr = Array.from(map) // [["name", "孙悟空"], ["age", 18]]
//第二种
const arr = [...map]
console.log(arr)
遍历map
for(const entry of map) {
const [key,value] = entry
console.log(entry)
/*
["name", "孙悟空"]
["age", 18]
*/
}
map.forEach((key,value) => {
console.log(key ,value)
})