如果我有一个集合数组,那么将这些集合组合成一个集合的最佳方法是什么?
说我是否有这个数组:
showBusinessGoals: (e) ->
e.preventDefault()
$(@el).find('.goal-business-type-selection').empty()
@renderBusinesses()
$(@el).find('.goal-business-type-selection').toggle()
如何操作此数组以生成具有相同输出的单个Set:
const array = [new Set([1, 2, 3]), new Set([4, 5, 6]), new Set([7, 8, 9])]
此数组具有任意数量的任意大小的数组。
答案 0 :(得分:3)
最简单的是最好的:
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));
答案 1 :(得分:2)
您也可以使用reduce
new Set( array.reduce( ( a, c ) => a.concat( [...c] ), [] ) )
<强>演示强>
var array = [new Set([1, 2, 3]), new Set([4, 5, 6]), new Set([7, 8, 9])];
var output = new Set( array.reduce( ( a, c ) => a.concat( [...c] ), [] ) );
console.log( [...output] );
&#13;
答案 2 :(得分:0)
这是我能想到的最简单的方法。
int newSet[20];
int i=0;
for(int x:array)
{
newSet[i]=x;
i++;
}