所以,我有一个包含100,000多个项目的数组,这一行会导致它调用堆栈:
@sortedList.sort (a, b) ->
return if a.value > b.value then -1 else 1
我即将实施各种各样的自定义(建议,任何人?)来解决这个问题,但我只是想确保我没有做一些明显愚蠢的事情导致它爆炸
答案 0 :(得分:5)
如果a.value == b.value
会怎样?如果项目相同,则为sort
comparison function should return zero:
- 如果
compareFunction(a, b)
小于0,请将a
排序为低于b
的索引。- 如果
compareFunction(a, b)
返回0,则a
和b
相互之间保持不变,但相对于所有不同的方式排序 元件。- 如果
compareFunction(a, b)
大于0,请将b
排序为低于a
的索引。
所以你想要更像这样的东西:
if a.value > b.value
-1
else if a.value < b.value
1
else
0
缺少的a.value == b.value
分支可能会导致sort
失去理智并在整个地方弄得一团糟;没有==
分支表示 a
在b
之前消失, b
在a
之前消失,你不能指望得到合理的结果。