0

リストから数字をランダムに選択し、次回は配列から削除する方法を教えてください。たとえば、次のような配列があります。

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

Pickボタンが押されたときに1つのアイテムを選択し、選択した値を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 に答える