1

したがって、100,000 個以上のアイテムの配列があり、この行によりコール スタックが吹き飛ばされます。

@sortedList.sort (a, b) ->
  return if a.value > b.value then -1 else 1

この問題を回避するために、さまざまなカスタムの並べ替えを実装しようとしています (提案、誰か?)。

4

1 に答える 1

5

次の場合はどうなりa.value == b.valueますか? アイテムが同じ場合、比較sort関数はゼロを返す必要があります。

  • compareFunction(a, b)が 0 未満の場合a、 より小さいインデックスに並べ替えますb
  • 0 を返す場合、互いに変更されずcompareFunction(a, b)に残さ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、気を失い、あちこちを混乱させる可能性があります。ブランチが that going before と going before言っ==ているわけではありません。そこから賢明な結果を期待することはできません。abba

于 2012-07-27T16:17:58.527 に答える