【发布时间】:2021-03-03 15:28:24
【问题描述】:
如何在 javascript 中对数组进行随机排序?
我试过这个:
array.sort(function(a, b){return Math.random()});
但它不起作用。
【问题讨论】:
标签: javascript arrays sorting random
如何在 javascript 中对数组进行随机排序?
我试过这个:
array.sort(function(a, b){return Math.random()});
但它不起作用。
【问题讨论】:
标签: javascript arrays sorting random
首先,欢迎您使用 stackoverflow!
你可以看看这个问题:Sorting an Array in Random Order
您可以通过提供自定义比较功能以随机顺序对数组进行排序:
var points = [1, 2, 3, 4, 5];
points.sort(function(a, b){return 0.5 - Math.random()});
但上面的例子并不准确,它会偏爱一些数字而不是其他数字。
最流行的正确方法,是Fisher Yates shuffle:
var points = [40, 100, 1, 5, 25, 10];
for (i = points.length -1; i > 0; i--) {
j = Math.floor(Math.random() * i)
k = points[i]
points[i] = points[j]
points[j] = k
}
【讨论】:
points.map(p => ({ p, i: Math.random}).sort((a, b) => a.i - b.i).map(p => p.p);