配列のコピーを作成するために、私の知っている最も簡単な方法は、使用している:
var newArray = [].concat(originalArray);
をあなたがリンクされ答えにソリューションのほとんどの1行目にこれを行うことができ、あなたが取得されます元のままの新しいアレイバック。ここにリンクされ、質問のトップクラスの答えを修正したバージョンです:あなたがサードパーティのライブラリを使用したい場合は
function shuffle(originalArray) {
var array = [].concat(originalArray);
var currentIndex = array.length, temporaryValue, randomIndex;
// While there remain elements to shuffle...
while (0 !== currentIndex) {
// Pick a remaining element...
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
// And swap it with the current element.
temporaryValue = array[currentIndex];
array[currentIndex] = array[randomIndex];
array[randomIndex] = temporaryValue;
}
return array;
}
ためたぶん便利なあなたはそれがあなたの元の配列を変更したが、単に新しいもの(コピー)を返さないようにしたいですか? – ramden
https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle – Bergi