在 TypeScript 中将集合转换为数组
Convert a Set to an Array in TypeScript
使用该Array.from()
方法将 a 转换Set
为数组,例如
const arr = Array.from(set)
. 该Array.from
方法从可迭代对象(例如 a)创建一个新数组Set
并返回结果。
索引.ts
const set1: Set<string> = new Set(['one', 'two', 'three']); // 👇️ const arr: string[] const arr = Array.from(set1); // 👇️ ['one', 'two', 'three'] console.log(arr);
我们传递给
Array.from
方法的唯一参数是一个可迭代对象(Set
示例中的 a)。
该方法将可迭代对象转换为数组并返回一个新的数组实例。
这是使用 TypeScript 时推荐的方法,因为编译器在将扩展运算符 (…) 与迭代器一起使用时经常会报错。
另一种方法是使用
扩展运算符 (…)。
索引.ts
const set1: Set<string> = new Set(['one', 'two', 'three']); // 👇️ const arr: string[] const arr = [...set1]; // 👇️ ['one', 'two', 'three'] console.log(arr);
展开运算符允许我们将 的值解包Set
到数组中。
您还可以使用这种方法将多个Set
对象转换为一个数组。
索引.ts
const set1: Set<string> = new Set(['one', 'two', 'three']); const set2: Set<string> = new Set(['four', 'five', 'six']); // 👇️ const arr: string[] const arr = [...set1, ...set2]; // 👇️ ['one', 'two', 'three', 'four', 'five', 'six'] console.log(arr);
将Set
对象解包到数组中的顺序将被保留。
另一种更手动的方法是使用该forEach()
方法迭代Set
并在每次迭代时将元素推入数组。
索引.ts
const set1: Set<string> = new Set(['one', 'two', 'three']); const arr: string[] = []; set1.forEach((element) => { arr.push(element); }); // 👇️ ['one', 'two', 'three'] console.log(arr);
我们传递给
Set.forEach
方法的函数将使用Set
.
在每次迭代中,我们只是将值推入数组。
这绝对是 3 种方法中最冗长和手动的。我更喜欢其他两种将 a
Set
转换为数组的方法中的任何一种。