从数组中选择随机元素而不重复

时间:2015-02-12 08:55:39

标签: javascript phaser-framework

我在各个精灵上显示随机数,并且希望将单个容器随机播放,同时不显示。如何在不重复相同颜色的情况下随机洗牌一组精灵?

我的数组是:

   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';

1 个答案:

答案 0 :(得分:2)

如果您以后不需要数组,可以执行以下操作:

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);
}

这将破坏数组,但它永远不会选择相同的元素两次