如何从数组中选择随机元素并从列表中删除它

时间:2013-07-03 18:06:38

标签: javascript

您能告诉我如何从列表中随机选择一个数字,并将其从阵列中删除下次吗? 例如,我有一个数组:

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

现在我想在按下一个Pick按钮时选择一个项目,并将拾取的值添加到div中,并从阵列中删除拾取的项目,以便在下一个Pick按钮推动它不会在那里直到选择所有项目。

感谢您的时间

2 个答案:

答案 0 :(得分:6)

如果改组阵列并不重要:

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

FIDDLE

修改

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

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

答案 1 :(得分:4)

Array.splice()

var randomItem = items.splice(Math.random() * items.length | 0, 1)[0];