ZetCode

JavaScript set() 方法

最后修改于 2025 年 4 月 4 日

在本文中,我们将展示如何使用 JavaScript 中的 set 方法来使用 Sets。

JavaScript Sets

Set 是一组唯一值的集合,其中每个值只能出现一次。 set 方法用于向 Set 对象添加新元素。 Sets 保持插入顺序,并且可以存储任何类型的值。

与数组不同,Sets 在添加元素时会自动删除重复值。 这使得它们特别适用于存储需要唯一性的集合。 Sets 提供了用于检查元素存在的有效方法。

实际上,set 方法是 JavaScript 中 Map 对象的一部分。 对于 Sets,我们使用 add 方法插入新元素。 本教程涵盖了这两个概念,以澄清这个常见的混淆点。

基本 Set 示例

以下示例演示了 JavaScript 中 Set 的基本用法。

main.js
const mySet = new Set();

// Adding elements to the Set
mySet.add(1);
mySet.add(5);
mySet.add('text');

console.log(mySet);

我们创建一个新的 Set 并向其中添加三种不同类型的元素。 Set 自动维护唯一性并保留元素的插入顺序。

$ node main.js
Set(3) { 1, 5, 'text' }

包含重复值的 Set

Sets 通过仅保留一个实例来自动处理重复值。

main.js
const numbers = new Set();

numbers.add(1);
numbers.add(2);
numbers.add(1); // Duplicate value
numbers.add(3);

console.log(numbers);
console.log(numbers.size); // Number of unique elements

我们尝试将重复值添加到 Set。 Set 自动过滤这些重复值,仅保留唯一值。 size 属性显示唯一元素的数量。

$ node main.js
Set(3) { 1, 2, 3 }
3

包含对象的 Set

Sets 可以存储对象引用,将不同的对象实例视为唯一。

main.js
const objSet = new Set();
const obj1 = {name: 'John'};
const obj2 = {name: 'John'};

objSet.add(obj1);
objSet.add(obj2);
objSet.add(obj1); // Same object reference

console.log(objSet);

我们将对象引用添加到 Set。 即使 obj1 和 obj2 具有相同的属性,它们在内存中也是不同的对象。 多次添加相同的对象引用只会存储一次。

$ node main.js
Set(2) { { name: 'John' }, { name: 'John' } }

将数组转换为 Set

可以从数组创建 Sets 以自动删除重复项。

main.js
const fruits = ['apple', 'banana', 'apple', 'orange', 'banana'];
const uniqueFruits = new Set(fruits);

console.log(uniqueFruits);
console.log([...uniqueFruits]); // Convert back to array

我们将一个包含重复值的数组转换为 Set。 Set 会自动删除重复项。 然后,我们使用扩展运算符将 Set 转换回数组。

$ node main.js
Set(3) { 'apple', 'banana', 'orange' }
[ 'apple', 'banana', 'orange' ]

Map set() 方法示例

实际的 set 方法属于 Map 对象,用于添加键值对。

main.js
const userMap = new Map();

// Using set() to add key-value pairs
userMap.set('name', 'Alice');
userMap.set('age', 30);
userMap.set('occupation', 'Developer');

console.log(userMap);
console.log(userMap.get('name')); // Retrieve value

我们创建一个 Map 并使用 set 方法添加键值对。 get 方法通过它们的键检索值。 Maps 像 Sets 一样保持插入顺序,但存储键控数据。

$ node main.js
Map(3) {
  'name' => 'Alice',
  'age' => 30,
  'occupation' => 'Developer'
}
Alice

来源

Set - 语言参考

在本文中,我们演示了如何在 JavaScript 中使用 Sets 和相关的 Map.set() 方法。

作者

我叫 Jan Bodnar,是一位充满激情的程序员,拥有丰富的编程经验。 自 2007 年以来,我一直在撰写编程文章。 迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。 我拥有超过十年的编程教学经验。

列出 所有 JS 数组函数。