Выбор случайных элементов из массива без повторения

Я показываю случайные числа на отдельных спрайтах и ​​хочу перетасовать отдельный контейнер, не отображая на нем то же самое. как перетасовать набор спрайтов случайным образом, не повторяя один и тот же цвет?

Мой массив:

   var color = new Array();
   color[0] = 'greenBox';
   color[1] = 'blueBox';
   color[2] = 'purpleBox';
   color[3] = 'yellowBox';
   color[4] = 'redBox';
   color[5] = 'whiteBox';
   color[6] = 'pinkBox';

person Kartik    schedule 12.02.2015    source источник


Ответы (1)


Если вам не нужен массив позже, вы можете сделать что-то вроде этого:

var color = [
    "greenBox",
    "blueBox",
    ...
];

while (color.length != 0) {
    var index = Math.floor(Math.random()*color.length);
    var pickedColor = color[index];
    colors.splice(index, 1);  // This removes the picked element from the array
    doStuffWith(pickedColor);
}

Это уничтожит массив, но никогда не выберет один и тот же элемент дважды.

person Suppen    schedule 12.02.2015