Maps
Map对象
var sayings = new Map();
sayings.set('dog', 'woof');
sayings.set('cat', 'meow');
sayings.set('elephant', 'toot');
sayings.size; // 3
sayings.get('fox'); // undefined
sayings.has('bird'); // false
sayings.delete('dog');
sayings.has('dog'); // false
for (var [key, value] of sayings) {
console.log(key + ' goes ' + value);
}
// "cat goes meow"
// "elephant goes toot"
sayings.clear();
sayings.size; // 0
WeakMap对象
键值必须是object
const privates = new WeakMap();
function Public() {
const me = {
// Private data goes here
};
privates.set(this, me);
}
Public.prototype.method = function() {
const me = privates.get(this);
// Do stuff with private data in `me`...
};
module.exports = Public;
Sets
set对象
set中的元素都是唯一的,意为set中的元素不能重复出现,只能出现一次。
var mySet = new Set();
mySet.add(1);
mySet.add('some text');
mySet.add('foo');
mySet.has(1); // true
mySet.delete('foo');
mySet.size; // 2
for (let item of mySet) console.log(item);
// 1
// "some text"
Array和set之间的转换
Array.from(mySet);
[...mySet2];
mySet2 = new Set([1, 2, 3, 4]);
Array和set比较
set元素的存储方式类似array,不同为:
- 使用indexOf判断元素是否存在于数组中,这样的效率比较慢。
- 可以使用元素值删除set中的元素,数组只能通过元素的索引来删除元素。
- 不能通过indexOf来寻找数组中的NaN值。
- set集合中只能存储不重复的元素值。
WeakSet对象
WeakSet中只能放入object。