代码之家  ›  专栏  ›  技术社区  ›  ted

如何随机化(随机)Javascript集

  •  1
  • ted  · 技术社区  · 6 年前

    我想合并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());
    }
    

    很明显我把它们整理好了,而不是让他们洗牌。 是否还有其他方法(更习惯和/或更有效)比使用shuffling array函数 this question 这样地:

    let setArray = Array.from(d);
    shuffleArray(setArray);
    const randomSet = new Set(setArray);
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Chris Cousins    6 年前

    在创建集合之前随机化数组,这样可以获得集合删除重复项的好处,但可以对其数据进行无序处理。但这假设了很多事情(你想经常重新洗牌吗?,以后是否要向集合中添加更多项?...)

    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());
    }
    
        2
  •  0
  •   user6878069user6878069    6 年前

    如果你问有没有更好的功能 How can I shuffle an array? (ES2015(ES6))这将有所帮助。

    如果我不明白你的问题,那么对不起。