【问题标题】:javascript numeric string reverse sort doesn't work properly [duplicate]javascript数字字符串反向排序无法正常工作[重复]
【发布时间】:2019-11-27 04:07:31
【问题描述】:

我有一个数组["4", "2", "5", "3"],为什么排序函数可以正常工作,而相反的却不行?

["4", "2", "5", "3"].sort(); //gives me ["2", "3", "4", "5"]

["4", "2", "5", "3"].reverse(); //gives me ["3", "5", "2", "4"]

【问题讨论】:

  • 你需要sort().reverse() (反向反向,它不排序)
  • reversesort 不是别名,它们是不同的
  • 附加说明:请记住,字符串和数字的排序方式不同。 "11" < "9" = true11 < 9 = false.

标签: javascript arrays string sorting numeric


【解决方案1】:

来自Array.prototype.reverse()

reverse() 方法将数组反转到位。第一个数组元素成为最后一个,最后一个数组元素成为第一个。

它只是反转给定的数组,与排序无关。你可以array.sort().reverse()


顺便说一句,["4", "2", "5", "3"].sort() 按词法对数组进行排序。

console.log(
  ["4", "2", "5", "40", "3"].sort() // ["2","3","4","40","5"]
)

如果要根据数值对给定数组进行排序,则必须这样做:

const array = ["4", "2", "5", "3"]

console.log(
  array.sort((a, b) => a - b) // asc
)

console.log(
  array.sort((a, b) => b - a) // desc
)

【讨论】:

  • 您将排序功能标记为错误的方式,而(a,b) => a-basc。我会在对数组array.slice().sort(...) 进行排序之前复制一份,否则console.log 将只显示最后一个订单。
  • @Thomas 谢谢。制作成 2 个独立的原木
【解决方案2】:

用这样的排序函数反转:

console.log(["4", "2", "5", "3"].sort().reverse())

【讨论】:

    猜你喜欢
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    • 2015-04-10
    相关资源
    最近更新 更多