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对象

键值必须是

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中只能放入 。

收藏 打印