如何随机化(shuffle)一个Javascript集
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何随机化(shuffle)一个Javascript集相关的知识,希望对你有一定的参考价值。
我想合并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);
答案
在创建集合之前随机化数组,这样就可以获得集合删除重复项的好处,但是可以对其数据进行混洗。这假定了很多东西(你想经常重新洗牌吗?,你以后会在这个集合中添加更多的东西吗?......)
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());
}
另一答案
如果你问是否有更好的功能,那么也许How can I shuffle an array?(ES2015(ES6))这将有所帮助。
如果我不明白你的问题那么抱歉。
以上是关于如何随机化(shuffle)一个Javascript集的主要内容,如果未能解决你的问题,请参考以下文章