在JavaScript中,Set
是一种特殊的类型,用于存储唯一值,无论是原始值还是对象引用。Set
对象允许你存储唯一的值,无论是原始值或者是对象引用。它是一个集合数据结构,类似于数组,但是成员的值都是唯一的,没有重复的值。
Set
对象是ES6中引入的新数据结构,它类似于数组,但是成员的值都是唯一的,没有重复的值。Set
对象存储的是一组唯一的值,可以是原始值,也可以是对象引用。
Set
中的值是唯一的,这有助于避免重复数据。for...of
循环或迭代器来遍历Set
中的元素。Set
可以存储任何类型的值,包括原始类型(如字符串、数字、布尔值)和引用类型(如对象)。
Set
非常有用。Set
可以用于执行数学上的集合运算,如并集、交集和差集。Set
来存储已经计算过的结果,以避免重复计算。// 创建一个Set
let mySet = new Set();
// 添加元素
mySet.add(1);
mySet.add(2);
mySet.add(2); // 不会添加,因为2已经存在
mySet.add('a');
mySet.add('b');
// 删除元素
mySet.delete(1);
// 检查元素是否存在
console.log(mySet.has(2)); // true
// 获取Set的大小
console.log(mySet.size); // 3
// 遍历Set
for (let item of mySet) {
console.log(item);
}
// 将Set转换为数组
let array = [...mySet];
console.log(array); // [2, 'a', 'b']
解决方法:使用扩展运算符...
或者Array.from()
方法。
let array = [1, 2, 2, 3, 4, 4, 5];
let set = new Set(array); // 使用Set构造函数
// 或者
let set2 = new Set([...array]); // 使用扩展运算符
// 或者
let set3 = new Set(Array.from(array)); // 使用Array.from()
解决方法:使用扩展运算符...
或者Array.from()
方法。
let set = new Set([1, 2, 3]);
let array = [...set]; // 使用扩展运算符
// 或者
let array2 = Array.from(set); // 使用Array.from()
解决方法:Set
中的对象比较是基于引用的,而不是基于值的。即使两个对象具有相同的属性和值,如果它们是不同的实例,它们也会被视为唯一的。
let set = new Set();
let obj1 = { firstName: 'John', lastName: 'Doe' };
let obj2 = { firstName: 'John', lastName: 'Doe' };
set.add(obj1);
set.add(obj2); // 添加成功,因为obj1和obj2是不同的引用
console.log(set.size); // 2
如果你需要基于对象的值来判断唯一性,你可能需要使用Map
或者其他方法来实现自定义的唯一性逻辑。
领取专属 10元无门槛券
手把手带您无忧上云