Set
//----------------------------------------------------Set----------------------
// Set(集合)是一组唯一值的集合。每个值只能在 Set 中出现一次。Set 可以容纳任何数据类型的值。
// 创建 Set
const letters = new Set(["b", "a", "c"]);
console.log(typeof letters); //object
console.log(letters instanceof Set); //true
// 将值添加到 Set,添加相等的元素,只有第一个会被保存
letters.add("d");
letters.add("d");
console.log(letters); //Set(4) {'b', 'a', 'c', 'd'}
// 列出所有条目
let text = "";
letters.forEach(function (value) {
text += value;
});
console.log(text); //bacd
// values() 方法返回包含 Set 中所有值的 Iterator 对象,使用 Iterator 对象访问元素。
// Set 没有键。keys() 返回与 values() 相同的结果。entries() 方法返回的是 [value,value] 值值对,而不是 [key,value] 键值对
text = "";
for (const entry of letters.values()) {
text += entry;
}
console.log(text); //bacd
text = "";
for (const entry of letters.entries()) {
text += entry;
}
console.log(text); //b,ba,ac,cd,d
//has() 如果值存在则返回 true。 delete() 从 Set 中移除元素。
if (letters.has("a")) letters.delete("a");
console.log(letters); //Set(3) {'b', 'c', 'd'}
//size 返回 Set 中元素的数量。
console.log(letters.size); //3
//clear() 从 Set 中移除所有元素。
letters.clear();
console.log(letters); //Set(0) {size: 0}
console.log(letters.size); //0
Map
//----------------------------------------------------Map------------------------
// Map 保存键值对,其中键可以是任何数据类型。Map 会记住键的原始插入顺序。Map 提供表示映射大小的属性。
const fruits = new Map([
["apples", 500],
["bananas", 300],
["oranges", 200],
]);
console.log(typeof fruits); //object
console.log(fruits instanceof Map); //true
//set() 为 Map 中的键设置值。get() 获取 Map 对象中键的值。
fruits.set("lemons", 400);
fruits.set("lemons", 100);
console.log(fruits); //Map(4) {'apples' => 500, 'bananas' => 300, 'oranges' => 200, 'lemons' => 100}
console.log(fruits.get("lemons")); //100
// 列出所有条目
text = "";
fruits.forEach(function (value) {
text += value;
});
console.log(text); //500300200100
// values() 方法返回包含 Map 中所有值的 Iterator 对象,使用 Iterator 对象访问元素。
// Map 没有键。keys() 返回与 values() 相同的结果。entries() 方法返回的是 [value,value] 值值对,而不是 [key,value] 键值对
text = "";
for (const entry of fruits.keys()) {
text += entry;
}
console.log(text); //applesbananasorangeslemons
text = "";
for (const entry of fruits.entries()) {
text += entry;
}
console.log(text); //apples,500bananas,300oranges,200lemons,100
//has() 如果值存在则返回 true。 delete() 从 Map 中移除元素。
if (fruits.has("apples")) fruits.delete("apples");
console.log(fruits); //Map(3) {'bananas' => 300, 'oranges' => 200, 'lemons' => 100}
//size 返回 Map 中元素的数量。
console.log(fruits.size); //3
//clear() 从 Map 中移除所有元素。
fruits.clear();
console.log(fruits); //Map(0) {size: 0}
console.log(fruits.size); //0