如果我有一组集合,将这些集合组合成一个集合的最佳方法是什么?
假设我有这个数组:const array = [new Set([1, 2, 3]), new Set([4, 5, 6]), new Set([7, 8, 9])]
我将如何操作此数组以生成具有与以下相同输出的单个 Set:new Set([1,2,3,4,5,6,7,8,9])
该数组具有任意数量的任意大小的集合。
最佳答案
最简单的就是最好的:
let result = new Set;
for (const set of array)
for (const element of set)
result.add(element);
或者,如果您想使用构造函数,我会使用立即调用的生成器函数来创建迭代器:
const result = new Set(function* () {
for (const set of array)
yield* set;
}());
当然你也可以声明一个reusable functional-minded generator function为了这:
function* flatten(iterable) {
for (const inner of iterable)
for (const element of inner)
yield element;
}
const result = new Set(flatten(array));
关于javascript - 将集合数组合并为单个集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48657421/