在 ES6 中,JavaScript 引入了 Set 类型,它是一种新的集合类型,可以储存任何类型的唯一值,而且可以用于快速判断一个值是否已经存在于集合中。在 ES8 中,Set 类型被进一步增强,新增了 Set.prototype.of() 和 Set.prototype.from() 两个方法,可以更方便地创建和转换 Set 集合。
Set.prototype.of()
Set.prototype.of() 方法可以接受任意数量的参数,然后返回一个新的 Set 对象,包含这些参数作为元素。例如:
const mySet = Set.of("apple", "banana", "orange");
console.log(mySet); // Set(3) {"apple", "banana", "orange"}Set.prototype.of() 的作用类似于数组的静态方法 Array.of(),不同的是它返回的是一个 Set 对象而不是数组。这个方法可以让我们更方便地创建 Set 集合。
Set.prototype.from()
Set.prototype.from() 方法可以接受一个类数组对象或可迭代对象作为参数,然后返回一个新的 Set 对象,包含这些元素。例如:
const myArr = ["apple", "banana", "orange"];
const mySet = Set.from(myArr);
console.log(mySet); // Set(3) {"apple", "banana", "orange"}Set.prototype.from() 的作用类似于数组的静态方法 Array.from(),不同的是它返回的是一个 Set 对象而不是数组。这个方法可以让我们更方便地将一个数组或可迭代对象转换为 Set 集合。
示例代码
下面是一个演示如何使用 Set.prototype.of() 和 Set.prototype.from() 的示例代码:
// www.javascriptcn.com code example
const myArr = ["apple", "banana", "orange"];
const mySet1 = Set.of("apple", "banana", "orange");
const mySet2 = Set.from(myArr);
console.log(mySet1); // Set(3) {"apple", "banana", "orange"}
console.log(mySet2); // Set(3) {"apple", "banana", "orange"}
console.log(mySet1.has("apple")); // true
console.log(mySet2.has("banana")); // true
const myArr2 = ["banana", "pear", "grape"];
const mySet3 = Set.from(myArr2);
const mySet4 = new Set([...mySet2, ...mySet3]);
console.log(mySet4); // Set(5) {"apple", "banana", "orange", "pear", "grape"}
console.log(mySet4.size); // 5
mySet4.delete("pear");
console.log(mySet4); // Set(4) {"apple", "banana", "orange", "grape"}以上代码创建了两个 Set 集合 mySet1 和 mySet2,分别使用了 Set.prototype.of() 和 Set.prototype.from() 方法。然后将 mySet2 的元素与另一个数组 myArr2 的元素合并,创建了一个新的 Set 集合 mySet4,并且从其中删除了一个元素。这个示例代码演示了如何使用 Set.prototype.of() 和 Set.prototype.from() 方法,以及 Set 集合的常见操作。
指导意义
学习 Set.prototype.of() 和 Set.prototype.from() 方法可以让我们更方便地创建和转换 Set 集合,在实际开发中可以提高代码的效率和可读性。此外,学习 Set 集合及其相关方法也可以拓展我们的思维,让我们更能够灵活地应对复杂的数据结构和算法问题。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67cfd7cce46428fe9ebfaf4a