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 在頻繁增刪鍵值對的場景下會有些性能優勢。