簡體   English   中英

使用自定義方法的Node.js array.sort導致RangeError:超出了最大調用堆棧大小

[英]Node.js array.sort with custom method causes RangeError: Max Call Stack Size Exceeded

因此,我有一個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,則將compareFunction(a, b)排序ab低的索引。
  • 如果compareFunction(a, b)返回0,則ab彼此相對不變,但對所有不同元素進行排序。
  • 如果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失去理智並在各處造成混亂。 ==分支說ab之前ba之前 ,您不能期望得出明智的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM