JS Set 方法集合

2024-07-23 14:53:27 320
JavaScript 的 Set 对象是一种集合,它允许你存储任何类型的唯一值,无论是原始值还是对象引用。

以下是 Set 对象的最新方法和一些常见用法:

访问、添加和删除元素

方法参数和说明描述示例代码
add(value)value:要添加到 Set 对象中的值。Set 对象添加一个元素,如果该元素已经存在则不进行任何操作。const set = new Set(); set.add(1); set.add(2); set.add(1); // Set {1, 2}
delete(value)value:要从 Set 对象中移除的元素。如果 Set 对象中存在该元素,则移除该元素并返回 true,否则返回 falseconst set = new Set([1, 2, 3]); set.delete(2); // true
clear()移除 Set 对象中的所有元素。const set = new Set([1, 2, 3]); set.clear(); // Set {}

查找和筛选元素

方法参数和说明描述示例代码
has(value)value:要测试在 Set 对象中是否存在的元素。如果 Set 对象中存在该元素,则返回 true,否则返回 falseconst set = new Set([1, 2, 3]); set.has(2); // true

遍历

方法参数和说明描述示例代码
forEach(callback, thisArg)callback:对每个元素执行的函数,thisArg:执行回调时用于 this 的值。Set 对象的每个值执行一次提供的函数。const set = new Set([1, 2, 3]); set.forEach(value => console.log(value));
entries()返回一个新的 Iterator 对象,它包含 Set 对象中每个元素的 [value, value] 数组。const set = new Set([1, 2, 3]); for (const entry of set.entries()) { console.log(entry); }
keys()返回一个新的 Iterator 对象,它包含 Set 对象中的每个元素。const set = new Set([1, 2, 3]); for (const key of set.keys()) { console.log(key); }
values()返回一个新的 Iterator 对象,它包含 Set 对象中的每个元素。const set = new Set([1, 2, 3]); for (const value of set.values()) { console.log(value); }

其他方法

方法参数和说明描述示例代码
size返回 Set 对象中的值的个数。const set = new Set([1, 2, 3]); console.log(set.size); // 3
intersection(Set) Set:进行比较的Set对象返回两个Set对象的交集const set1 = new Set([1, 2, 3]); const set2 = new Set([2, 3, 4, 5]); console.log(set1.intersection(set2)); // Set(2) {2, 3}
union(Set) Set:进行比较的Set对象返回两个Set对象的并集const set1 = new Set([1, 2, 3]); const set2 = new Set([2, 3, 4, 5]); console.log(set1.union(set2)); // Set(5) {1, 2, 3, 4, 5}
difference(Set) Set:进行比较的Set对象返回两个Set对象的差集const set1 = new Set([1, 2, 3]); const set2 = new Set([2, 3, 4, 5]); console.log(set1.difference(set2)); //Set(1) {1} console.log(set2.difference(set1)); // Set(2) {4, 5}
symmetricDifference(Set) Set:进行比较的Set对象返回两个Set对象的差集的并集。const set1 = new Set([1, 2, 3]); const set2 = new Set([2, 3, 4, 5]); console.log(set1.symmetricDifference(set2)); //Set(3) {1, 4, 5}
isSubsetOf(Set) Set:进行判断的对象返回 Set 是否是另一个 Set 的子集, 是的返回true,否则返回false。。const set1 = new Set([1, 2, 3]); const set2 = new Set([2, 3]); console.log(set2.isSubsetOf(set1)); //true
isSupersetOf(Set) Set:进行判断的对象返回 Set 是否是另一个 Set 的超集, 是的返回true,否则返回false。。const set1 = new Set([1, 2, 3]); const set2 = new Set([2, 3]); console.log(set1.isSupersetOf(set2)); //true

完整示例

// 创建一个 Set
const set = new Set();

// 添加元素
set.add(1);
set.add(2);
set.add(3);
console.log(set); // Set { 1, 2, 3 }

// 检查是否存在某个元素
console.log(set.has(2)); // true
console.log(set.has(4)); // false

// 删除某个元素
set.delete(2);
console.log(set); // Set { 1, 3 }

// 获取 Set 的大小
console.log(set.size); // 2

// 遍历 Set 的元素
set.forEach(value => {
  console.log(value);
});
// 输出: 
// 1
// 3

// 使用 entries、keys 和 values 方法
for (const entry of set.entries()) {
  console.log(entry);
}
// 输出:
// [ 1, 1 ]
// [ 3, 3 ]

for (const key of set.keys()) {
  console.log(key);
}
// 输出:
// 1
// 3

for (const value of set.values()) {
  console.log(value);
}
// 输出:
// 1
// 3

// 清空 Set
set.clear();
console.log(set); // Set {}

const set1 = new Set([1, 2, 3]);
const set2 = new Set([2, 3, 4, 5]);
const set3 = new Set([2, 3]);

set1.intersection(set2); // Set(2) {2, 3}

set1.union(set2); //Set(5) {1, 2, 3, 4, 5}

set1.difference(set2); // Set(1) {1}

set1.symmetricDifference(set2); // Set(3) {1, 4, 5}

set3.isSubsetOf(set1); // true

set1.isSupersetOf(set3); // true

Set 对象是 ES6(ECMAScript 2015)中引入的,以上方法使得操作集合变得非常方便。通过这些方法,你可以有效地管理和操作集合中的元素。

set 对象这些方法 intersection()、union()、difference()、symmetricDifference()、isSubsetOf()、isSupersetOf() 目前只能在Node 22+、Chrome/Edge 122+、Firefox 127+、Safari 17+中使用。