0

您能否让我知道如何从列表中随机选择一个数字,并在下次将其从数组中删除?例如,我有一个数组:

var items   = new Array( 2,3,4,5,6,7,8,9,10 );

现在我想在按下 Pick 按钮时选择一个项目并将选取的值添加到 div 并从数组中删除选取的项目,因此在下一个 Pick 按钮按下它之前不会存在,直到选择所有项目。

谢谢你的时间

4

2 回答 2

7

如果改组数组无关紧要:

items.sort(function() { return 0.5 - Math.random();}).pop();

小提琴

编辑:

我可能应该更清楚一点,因为小提琴并没有真正利用洗牌。
数组只需要洗牌一次即可使其随机化,之后没有理由再次洗牌,只需弹出最后一个值:

var items   = new Array( 2,3,4,5,6,7,8,9,10 );

items.sort(function() { return 0.5 - Math.random();})

$('#test').on('click', function() {
    var ran = items.pop();
    alert(ran ? ran : 'No more numbers in array');
});

JSPERF
JSFIDDLE

于 2013-07-03T18:17:30.903 回答
7

Array.splice()

var items = ["a","b","c","d"];
var randomIndex = Math.floor(Math.random() * items.length);
var randomItem = items.splice(randomIndex, 1)[0];
console.log("random item: %o", randomItem);
console.log("remaining items: %o", items);

于 2013-07-03T18:09:15.683 回答