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')); //输出trueconsole.log(map.size); //输出3console.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
类里实现的一样。