Map

72 阅读1分钟

Map 和 Object的主要区别

Map 用来存储键值对结构的数据(key-value), Object 中存储的数据就可以认为是一种键值对结构。

  1. Object中 的属性名只能是字符串或符号,如果传递了其他类型的属性名,JS 会自动将其转换为字符串。
  2. Map中任何类型的值都可以称为数据的key 。
const obj = {
    "name":"孙悟空",
    "age":18, 
    [Symbol()]:"哈哈",
    [obj2]:"嘻嘻" // obj2 is not defined
}

Map的使用

  1. 创建:
    • new Map( )
  2. 属性和方法
    • 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)
})