LoginSignup
0
1

More than 5 years have passed since last update.

入力配列をシャッフルした配列を返す関数

Last updated at Posted at 2017-06-05

自分用メモ

入力配列をシャッフルした配列を返す関数

function shuffle(ary) {
  var newAry = [];

  while(ary.length > 0) {
    var i = Math.floor(Math.random() * ary.length)
    var v = ary.splice(i, 1)[0];
    newAry.push(v);
  }
  return newAry;
}

追記

__hageさんより、Arrayのsortを使った方がより簡潔に書けるとのコメントをいただきました。

ary.sort(function(a,b){return Math.random()-0.5})

確かに簡潔


追記2
iMasanariさんより、sortの使い方によって偏りが出てしまうそうです。
以下の方法なら均一に混ざるとのことでした。

const shuffle = (arr) =>
  arr.map((value) => ({ value, random: Math.random() }))
    .sort((a, b) => a.random - b.random)
    .map(({ value }) => value)
0
1
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1