Как рандомизировать (перемешать) набор Javascript - PullRequest
0 голосов
/ 31 августа 2018

Я хочу объединить 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());
}

Я, очевидно, приведу их в порядок, вместо того, чтобы их перетасовать. Есть ли другой (более идиоматический и / или эффективный) способ, чем использование функции массива тасования, начиная с этот вопрос , например:

let setArray = Array.from(d);
shuffleArray(setArray);
const randomSet = new Set(setArray);

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Рандомизируйте массивы перед созданием набора, таким образом, вы получаете выгоду от удаления дубликатов, а также возможность перемешивания данных. Хотя это предполагает много вещей (хотите ли вы часто переставлять?), Вы добавите больше элементов в набор позже? ...)

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());
}
0 голосов
/ 31 августа 2018

если вы спросите, есть ли лучшая функция, чем, возможно, Как я могу перетасовать массив? (ES2015 (ES6)) это поможет.

если я не понимаю вашего вопроса, то извините.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...