Map对象保存键/值对,是键/值对的集合。任何值(对象或者原始值) 都可以作为一个键或一个值。Object结构提供了“字符串—值”的对应,Map结构提供了“值—值”的对应。
JavaScript获取map值示例:
map对象如下:var mapObject = {
id1001: '小明',
id1002: '小花'
}
获取id是‘id001’对应的值:for(var key in mapObject){
var value = mapObject[ key ]; //注意是 [ ]
alert(value); //依次弹出小明、小花
}
Object 和 Map 对象的对比:
相似点: 都允许你按键存取一个值、删除键、检测一个键是否绑定了值。
不同点:
1. 一个对象的键只能是字符串或者 Symbols,但一个 Map 的键可以是任意值,包括函数、对象、基本类型。
2.Map 中的键值是有序的,而添加到对象中的键则不是。因此,当对它进行遍历时,Map对象是按插入的顺序返回键值。
3. 通过 size 属性直接获取一个 Map 的键值对个数,而 Object 的键值对个数只能手动计算。
4. Map 是可迭代的,而 Object 的迭代需要先获取它的键数组然后再进行迭代。
5. Object 都有自己的原型,所以原型链上的键名有可能和对象上的键名产生冲突。虽然 ES5 开始可以用 map = Object.create(null) 来创建一个没有原型的对象,但是这种用法不太常见。
6. Map 在频繁增删键值对的场景下会有些性能优势。