【问题标题】:JavaScript sort with seemingly inconsistent resultsJavaScript 排序结果看似不一致
【发布时间】:2021-04-19 15:14:52
【问题描述】:

我正在尝试对一组数字进行排序,但一个值应该优先于其他所有值,这意味着它应该始终出现在排序数组的末尾。

我正在尝试寻找合适的排序函数,但偶然发现了我不理解的结果。

你可以看到我的排序函数,这两种情况都是一样的。据我了解,如果 a 大于 b,它应该返回 1。 a = 2 的固定返回值不应该使 2 成为“最大”数字吗? 它似乎适用于第一个数组,但不适用于第二个数组,因此结果取决于输入数组。我尝试了很多不同的输入,但我找不到它何时起作用和何时不起作用的模式。

【问题讨论】:

  • 那个排序比较器函数本身就是无效的。您必须为任何一对元素返回一致的比较结果,并且必须考虑到“a”和“b”可能是您在之前比较过的相同的两个元素,但在倒序.

标签: javascript sorting


【解决方案1】:

您也应该检查 b 是否为 2,这可行:

console.log([5, 4, 3, 2, 1].sort((a, b) => {
  if (a === 2) return 1
  if (b === 2) return -1
  return a - b
}))

【讨论】:

    猜你喜欢
    • 2011-06-27
    • 2013-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 2021-11-08
    • 1970-01-01
    • 2014-09-21
    相关资源
    最近更新 更多