如何随机播放JavaScript数组中的元素

简短答案:

let list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
list = list.sort(() => Math.random() - 0.5)

长答案:

我需要重新整理JavaScript数组中的元素。

换句话说,我想重新混合数组元素,使它们的顺序与上一个顺序不同。

从这样的数组开始:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

每当我运行该操作时,我都希望有一些不同的东西,例如:

[4, 8, 2, 9, 1, 3, 6, 5, 7]
[5, 1, 2, 3, 7, 4, 9, 6, 8]
[3, 1, 4, 7, 8, 6, 2, 9, 5]

这是我想出的过程。给定数组list

const list = [1, 2, 3, 4, 5, 6, 7, 8, 9]

我们可以称之为sort()方法,该方法接受一个返回值在-0.5到0.5之间的函数:

list.sort(() => Math.random() - 0.5)

对数组中的每个元素都运行此函数。您可以传递数组的2个元素,如下所示:list.sort((a, b) => Math.random() - 0.5)但在这种情况下,我们不使用它们。如果此操作的结果<0,则元素a置于低于以下指数的位置b, and the opposite if the result is > 0.

你可以在此处阅读有关Array.sort()的所有详细信息

呼唤sort()列表上的值不会更改原始数组的值。

现在,您可以将此操作的结果分配给新变量,如下所示:

const shuffled = list.sort(() => Math.random() - 0.5)

或者您也可以覆盖现有列表(如果您声明为let多变的:

let list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
list = list.sort(() => Math.random() - 0.5)

免费下载我的JavaScript初学者手册


更多js教程: