清楚解释此案例的.sort()行为

时间:2014-01-06 16:18:36

标签: javascript arrays function sorting

alert("0123456789".split("").sort(function(){return .5-Math.random()}).join(""));

这可能是在JavaScript中生成10位数字的最短方法之一,其中包含随机顺序中0到9的10位数字。示例:7205169483。

split("")//OK, it splits by chars because of empty separator
.sort(function(){return .5-Math.random()})
.join("")//joins with empty string as a separator

为什么{return Math.random()}无效?

.sort()执行了多少次 - 十次或一次?

1 个答案:

答案 0 :(得分:0)

正如@elclanrs在评论中所说,sort需要一个回调函数,它将采用两个元素ab并进行比较。如果a < b0 a == b,则此函数必须返回负数,否则返回正数。

函数sort将被调用多次,这取决于排序算法的实现。您可以找到更多信息in this question

在您的示例中,0.5 - Math.Random()将返回负数或正数,因为Math.Random()返回0到1之间的值。