gpt4 book ai didi

Node.js array.sort 使用自定义方法会导致 RangeError : Max Call Stack Size Exceeded

转载 作者:太空宇宙 更新时间:2023-11-03 22:48:17 25 4
gpt4 key购买 nike

所以,我有一个包含 100,000 多个项目的数组,这行代码导致它破坏了调用堆栈:

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

我即将实现某种自定义类型(建议,有人吗?)来解决这个问题,但我只是想确保我没有做一些明显愚蠢的事情,导致它爆炸.

最佳答案

如果a.value == b.value会发生什么?一个sort comparison function should return zero如果项目相同:

  • If compareFunction(a, b) is less than 0, sort a to a lower index than b.
  • If compareFunction(a, b) returns 0, leave a and b unchanged with respect to each other, but sorted with respect to all different elements.
  • If compareFunction(a, b) is greater than 0, sort b to a lower index than a.

所以你想要更像这样的东西:

if a.value > b.value
-1
else if a.value < b.value
1
else
0

缺少的a.value == b.value分支可能会导致sort失去理智,弄得一团糟;没有 == 分支表示 a 位于 bb 之前> 出现在 a 之前,你不能指望从中得到合理的结果。

关于Node.js array.sort 使用自定义方法会导致 RangeError : Max Call Stack Size Exceeded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11691325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com