一尘不染

如何随机化(随机播放)JavaScript数组?

javascript

我有一个像这样的数组:

var arr1 = ["a", "b", "c", "d"];

如何将其随机/随机播放?


阅读 301

收藏
2020-04-22

共1个答案

一尘不染

实际无偏混洗算法是Fisher-Yates(aka Knuth)。

function shuffle(array) {

  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;

}



// Used like so

var arr = [2, 11, 37, 42];

shuffle(arr);

console.log(arr);
2020-04-22