Cách xáo trộn các phần tử trong một mảng JavaScript

Câu trả lời ngắn:

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

Câu trả lời dài:

Tôi có nhu cầu xáo trộn các phần tử trong một mảng JavaScript.

Nói cách khác, tôi muốn trộn lại các phần tử của mảng, để chúng có thứ tự khác với thứ tự trước đó.

Bắt đầu từ một mảng như thế này:

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

Tôi muốn một cái gì đó khác bất cứ khi nào tôi chạy hoạt động, như thế này:

[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]

Đây là quy trình tôi đã nghĩ ra. Cho mảnglist:

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

Chúng tôi có thể gọisort()phương thức chấp nhận một hàm trả về giá trị từ -0,5 đến 0,5:

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

Hàm này được chạy cho mọi phần tử trong mảng. Bạn có thể chuyển 2 phần tử của mảng, như sau:list.sort((a, b) => Math.random() - 0.5)nhưng trong trường hợp này, chúng tôi không sử dụng chúng. Nếu kết quả của phép toán này là <0, phần tửađược đưa vào một chỉ số thấp hơnb, and the opposite if the result is > 0.

Bạn có thểđọc tất cả thông tin chi tiết về Array.sort () tại đây.

Kêu gọisort()trên một danh sách không thay đổi giá trị mảng ban đầu.

Bây giờ bạn có thể gán kết quả của thao tác này cho một biến mới, như sau:

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

hoặc bạn cũng có thể ghi đè lên danh sách hiện có, nếu bạn khai báo rằngletBiến đổi:

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

Tải xuống miễn phí của tôiSổ tay dành cho Người mới bắt đầu JavaScript


Các hướng dẫn js khác: