所以,我有一个包含 100,000 多个项目的数组,这一行导致它破坏了调用堆栈:
@sortedList.sort (a, b) ->
return if a.value > b.value then -1 else 1
我即将实施一种自定义的某种类型(建议,有人吗?)来解决这个问题,但我只是想确保我没有做一些导致它爆炸的公然愚蠢的事情。
所以,我有一个包含 100,000 多个项目的数组,这一行导致它破坏了调用堆栈:
@sortedList.sort (a, b) ->
return if a.value > b.value then -1 else 1
我即将实施一种自定义的某种类型(建议,有人吗?)来解决这个问题,但我只是想确保我没有做一些导致它爆炸的公然愚蠢的事情。
如果 会发生什么a.value == b.value
?如果项目相同,sort
比较函数应返回零:
- 如果
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
,您不能期望从中得到明智的结果。