var myMap = new Map();
var keyObj = {},
keyFunc = function () { return 'hey'},
keyString = "a string";
myMap.set(keyString, "value associated with 'a string'");
myMap.set(keyObj, "value associated with keyObj");
myMap.set(keyFunc, "value associated with keyFunc");
console.log(myMap.get(keyFunc));
Set
的使用场景Set
和Array
的区别是Set
里的每一个元素都是唯一的,比如你有一个Array
里面有4
个元素[1, 2, 3, 1]
,如果你把它转换成Set
,就变成[1, 2, 3]
了。所以我们可以利用Set
的这个特性做整数数组的去重。但要注意的是,如果你的数组是[{name: 1}, {name: 1}]
这样的包含Object
的数组,那么你把它转换为Set
时并不能去重,因为虽然这两个对象看起来一样,但在Set
看来,这个数组里的两个对象是两个完全不同的值,所以并不符合去重的要求。Map
的使用场景Map
和Object
很类似,但Map
有一个比较特殊的应用场景。如果你在开发时不确定键值对里面的键的名称,那么你需要用Map
。举例来说,你需要动态地从MongoDB
里获取键值并显示给用户,但也许你并不关心这些键值的键名到底是什么,那么在这种情况下,你可以用Map
,例如这样: