讀古今文學網 > 學習JavaScript數據結構與算法(第2版) > 7.3 ES6Map類 >

7.3 ES6Map類

ECMAScript 2015新增了Map類。我們可以基於ES6的Map類開發我們的Dictionary類。

 關於ECMAScript 6的Map類的實現細節,請查閱https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map(或http://goo.gl/dm8VP6)。

我們看看原生的Map類怎麼用。

還是用我們原來測試Dictionary類的例子:

var map = new Map;

map.set('Gandalf', '[email protected]');
map.set('John', '[email protected]');
map.set('Tyrion', '[email protected]');

console.log(map.has('Gandalf')); //輸出true
console.log(map.size); //輸出3
console.log(map.keys); //輸出["Gandalf", "John", "Tyrion"]
console.log(map.values); //輸出["[email protected]",
"[email protected]", "[email protected]"]
console.log(map.get('Tyrion')); //輸出[email protected]

  

和我們的Dictionary類不同,ES6的Map類的values方法和keys方法都返回Iterator(第2章提到過),而不是值或鍵構成的數組。另一個區別是,我們實現的size方法返回字典中存儲的值的個數,而ES6的Map類則有一個size屬性。

刪除map中的元素可以用delete方法:

map.delete('John');

  

clear方法會重置map數據結構,這跟我們在Dictionary類裡實現的一樣。