我在使用时发现了一个奇怪的现象Array.prototype.sort()在一系列数字上,我不确定是什么原因造成的。
我的目标是使用反转数组sort
(不使用reverse
)所以我可以像这样链接它:
const shouldReverse = Math.random() > 0.5,
result = foo().bar().map(...).reverseIf(shouldReverse);
我相信我应该能够使用来实现这一目标sort
,这似乎在某些情况下有效,但在其他情况下则无效。
这是一个工作示例:
const myArray = ['a', 'b', 'c', 'd'],
mySortedArray = myArray.sort(() => 1);
console.log(mySortedArray);
["d", "c", "b", "a"]
还有一个不起作用的例子:
const myArray = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k'],
mySortedArray = myArray.sort(() => 1);
console.log(mySortedArray);
["f", "k", "a", "j", "i", "h", "g", "b", "e", "d", "c"]
这种情况仅在 Chrome 中发生,并且仅当数组中的元素超过 10 个时才会发生 - 这可能是 Chrome V8 引擎中某种形式的优化吗?