/

如何在JavaScript数组中打乱元素

如何在JavaScript数组中打乱元素

簡短回答:

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

詳細回答:

我有一個需要將JavaScript數組中的元素打亂的需求。

換句話說,我想將數組元素重新排列,使其與之前的順序不同。

從這樣一個數組開始:

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

我希望每次運行操作時都得到不同的結果,像這樣:

1
2
3
[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

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

我們可以調用sort()方法,該方法接受一個返回值在-0.5和0.5之間的函數:

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

這個函數對數組中的每個元素運行。您可以像這樣傳遞數組的2個元素:list.sort((a, b) => Math.random() - 0.5),但在這種情況下,我們不使用它們。如果此操作的結果<0,則將元素a放置在比b更低的索引中,如果結果>0,則相反。

您可以在此處閱讀有關Array.sort()的詳細信息

調用sort()不會改變原始數組的值。

現在,您可以將此操作的結果賦值給新變量,例如:

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

或者,如果將其聲明為let變量,還可以覆蓋現有的list

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

tags: [“JavaScript”, “array”, “shuffle”, “sort”, “random”]