关于专题【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()
测试结果

还有一个简单的方法:

function shuffle1(arr) {
  arr.sort(() => Math.random() - 0.5)
}

0
浏览:546

0 条评论

发表评论

电子邮件地址不会被公开。

你必须允许浏览器启用JavaScript才能看到验证码

Scroll Up