如何在JavaScript数组中打乱元素
簡短回答:
1 | let list = [1, 2, 3, 4, 5, 6, 7, 8, 9] |
詳細回答:
我有一個需要將JavaScript數組中的元素打亂的需求。
換句話說,我想將數組元素重新排列,使其與之前的順序不同。
從這樣一個數組開始:
1 | [1, 2, 3, 4, 5, 6, 7, 8, 9] |
我希望每次運行操作時都得到不同的結果,像這樣:
1 | [4, 8, 2, 9, 1, 3, 6, 5, 7] |
下面是我想出的過程。給定數組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,則相反。
調用sort()
不會改變原始數組的值。
現在,您可以將此操作的結果賦值給新變量,例如:
1 | const shuffled = list.sort(() => Math.random() - 0.5) |
或者,如果將其聲明為let
變量,還可以覆蓋現有的list
:
1 | let list = [1, 2, 3, 4, 5, 6, 7, 8, 9] |
tags: [“JavaScript”, “array”, “shuffle”, “sort”, “random”]