Map

作者: 爱笑的书生 | 来源:发表于2019-07-16 13:24 被阅读0次

Map分析
1.优点:
1.key-value键值对的集合,2.可以循环遍历,可以和其他类型之间转换
方法:

  1. has 判断是否存在 2. get 获取当前的键值 value值 3.set 更改当前键值的 value值 4.delete 移除 当前key值 5. clear 清除所有的值
    遍历方法
  2. keys 2.values 3.forEach 4.for of
2.与其他数据结构之间的转换

Map 转 Array

const map = new Map([[1, 1], [2, 2], [3, 3]])
console.log([...map])   // [[1, 1], [2, 2], [3, 3]]

Array 转 Map

const map = new Map([[1, 1], [2, 2], [3, 3]])
console.log(map)    // Map {1 => 1, 2 => 2, 3 => 3}

Map 转 Object
因为 Object 的键名都为字符串,而Map 的键名为对象,所以转换的时候会把非字符串键名转换为字符串键名。

function mapToObj(map) {
    let obj = Object.create(null)
    for (let [key, value] of map) {
        obj[key] = value
    }
    return obj
}
const map = new Map().set('name', 'An').set('des', 'JS')
mapToObj(map)  // {name: "An", des: "JS"}

Object 转 Map

function objToMap(obj) {
    let map = new Map()
    for (let key of Object.keys(obj)) {
        map.set(key, obj[key])
    }
    return map
}

objToMap({'name': 'An', 'des': 'JS'}) // Map {"name" => "An", "des" => "JS"}

Map 转 JSON

function mapToJson(map) {
    return JSON.stringify([...map])
}

let map = new Map().set('name', 'An').set('des', 'JS')
mapToJson(map)  // [["name","An"],["des","JS"]]

JSON 转 Map

function jsonToStrMap(jsonStr) {
  return objToMap(JSON.parse(jsonStr));
}

jsonToStrMap('{"name": "An", "des": "JS"}') // Map {"name" => "An", "des" => "JS"}

参考链接:https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/6

相关文章

网友评论

      本文标题:Map

      本文链接:https://www.haomeiwen.com/subject/xikzkctx.html