【十一】數組洗牌函數

關於專題【vue開發音樂App】

如何優雅地將一個數組打亂?打亂意味着要隨機、沒有任何規律,就像洗牌那樣,所以用Math.random()生成隨機數是個可取的方法。shuffer()有可能在日常開發中使用,所以我們可以歸納到公用的js中去,src/common/js/下新建util.js

// 生成(min, max]之間的隨機整數
function getRandomInt(min, max) {
  return Math.floor(Math.random() * (max - min + 1) + min)
}

// 洗牌函數:遍歷需要洗牌的數組,每次生成一個0到i的隨機整數j,讓第i位的元素與第j位的元素互換位置,以達到打亂的目的
export function shuffle(arr) {
  let _arr = arr.slice()
  for (let i = 0; i < _arr.length; i++) {
    let j = getRandomInt(0, i)
    let t = _arr[i]
    _arr[i] = _arr[j]
    _arr[j] = t
  }
  return _arr
}

調用

import {shuffle} from 'common/js/util'

...

let arr = [2, 4, 76, 90, 234, 78, 1, 34, 67, 76, 89, 231, 23, 42, 5, 9]
let list = shuffle()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章