Map对象

作者: 颖小李 | 来源:发表于2020-07-15 15:55 被阅读0次

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map
————————————————
1.Map对象在遍历时的顺序是确定的,由插入顺序决定。用 for ... of 遍历,不能通过 for in 遍历。
2.可以通过size属性,获取键值对的个数,而不是length。
3.Map的基础用法

let myMap = new Map();
myMap.set('a',1)
myMap.set('b',2)
myMap.get('a')
for (let [key, value] of myMap) {
  console.log(key + " = " + value);
}
for (let key of myMap.keys()) {
  console.log(key);
}
for (let value of myMap.values()) {
  console.log(value);
}
for (let [key, value] of myMap.entries()) { // 只能通过数组来解构
  console.log(key + " = " + value);
}
myMap.forEach(function(value, key) { // value 在前,key 在后
  console.log(key + " = " + value);
})
myMap.delete('a')

4.Map与数组
(1)直接用二维数组生成Map对象
内部数组里只取前两个值,多的直接丢弃,一个值时value值为undefined,空数组 key\value 均为undefined

(2)可以用Array.from 将Map对象转成二维数组,或者直接用展开运算符 ... 。
(3)Map 的复制和合并

let first = new Map([
  [1, 'one'],
  [2, 'two'],
  [3, 'three'],
]);
let second = new Map([
  [1, 'uno'],
  [2, 'dos']
]);
let merged = new Map([...first, ...second]); //如果有重复的键值,则后面的会覆盖前面的

let original = new Map([
  [1, 'one']
]);
let clone = new Map(original); //直接用Map对象做参数

5.可以在Map上设置对象的属性,但是有些操作会引起混乱,最好别混用

let wrongMap = new Map()
wrongMap['bla'] = 'blaa'
wrongMap['bla2'] = 'blaaa2'
console.log(wrongMap)  // Map { bla: 'blaa', bla2: 'blaaa2' }

wrongMap.has('bla')    // false
wrongMap.delete('bla') // false
console.log(wrongMap)  // Map { bla: 'blaa', bla2: 'blaaa2' }

6.Map 和Object的比较

Map Object
意外的键 只有显式插入的键 有原型,原型上可能有冲突的
键的类型 任意值,函数、对象、数字等等 只能是String和Symbol
键的顺序 有序,以插入顺序为准 无序,每次遍历顺序可能都不同
size size属性 只能手动计算键值对个数
迭代 是iterable的,可直接迭代 以某种方式获取键后才能迭代??
性能 在频繁增删键值对的场景下表现更好。 在频繁添加和删除键值对的场景下未作出优化。

相关文章

  • xml字符串转成map对象,map对象转成bean对象

    xml字符串转成map对象 map对象转成bean对象

  • 初探 forEach() 方法

    Map对象 Map.prototype.forEach() forEach() 方法将会以插入顺序对 Map 对象...

  • 对象拷贝、实体转Map

    实体转Map返回map对象: 借助springframework对象拷贝

  • Map与其他数据结构的互相转换

    一:Map转数组 使用扩展运算符 ... 二:数组转Map 三:Map转为对象 四:对象转Map 五:Map 转为...

  • ES6 简易示例

    Map对象 Map对象 和 Objects 的区别Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个...

  • STLRecipe---map

    map对象 map类模板定义在map文件头中,它定义了一个保存T 类型对象的 map,每个 T类型的对象...

  • 2019-01-03

    Map集合 Map集合 1.1Map集合概念 Map集合是一种存放关系对象的对象的双列集合。 1.2Map集合的常...

  • (17.05.11)箭头函数、Map、for...of...循环

    箭头函数 Map    var map = new Map()        对象    设置        ma...

  • python-迭代对象处理

    参考廖雪峰python3知识点的总结 使用函数对迭代对象进行处理 map函数:map(函数对象,可迭代对象)map...

  • 对象:Map

    Map 数据结构。 它类似于一般对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可...

网友评论

      本文标题:Map对象

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