我想合并3组,然后对它们的并集进行迭代,但是我希望此并集是随机的。
如果我这样做:
const a = new Set([1,2,3]);
const b = new Set([10,20,30]);
const c = new Set([100,200,300]);
const d = new Set([...a, ...b, ...c]);
const iterator = d.values();
for (let i = 0; i < 9; i++) {
console.log(iterator.next());
}
我显然使它们井然有序,而不是将它们拖曳。 除了使用this question中的改组数组函数之外,还有另一种(更惯用和/或更有效)的方式:
let setArray = Array.from(d);
shuffleArray(setArray);
const randomSet = new Set(setArray);
答案 0 :(得分:1)
在创建集合之前先对数组进行随机化,这样一来,您可以获得删除重复项的好处,但可以重新整理其数据。但这假设了很多事情(您是否要经常重新洗牌?是否会在以后添加更多项目?)
const arr1 = [1, 2, 3];
const arr2 = [10, 20, 30];
const arr3 = [100, 200, 300];
const arrs = shuffle([ ...arr1, ...arr2, ...arr3 ]);
const d = new Set(arrs);
const iterator = d.values();
for (let i = 0; i < 9; i++) {
console.log(iterator.next());
}
答案 1 :(得分:0)
如果您问是否有更好的功能,那么也许How can I shuffle an array?(ES2015(ES6))会有所帮助。
如果我不明白你的问题,那就对不起。
答案 2 :(得分:0)
这是一个可能并不理想的答案,但可行。用伪代码: