gpt4 book ai didi

JavaScript:Chrome 不正确地比较字符串

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:31:10 25 4
gpt4 key购买 nike

谁能解释这是 Chrome 中的错误还是我错误地比较了字符串?

Chrome 中的排序方法提供了奇怪的(至少对我而言)结果。我执行以下操作:

var a = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c"]

a.sort((i1,i2)=>i1>i2)

["7", "c", "b", "a", "9", "8", "6", "5", "4", "3", "2", "1"]

Firefox 给出了预期的结果:

["c", "b", "a", "9", "8", "7", "6", "5", "4", "3","2","1"]

最佳答案

这是您的 sort 中的错误回调,而不是 JavaScript 引擎。

回调必须返回一个数字,而不是 bool 值:

  • 0如果参数是等价的
  • <0如果第一个参数“小于”第二个
  • >0如果第二个参数“小于”第一个

localeCompare如果您希望通过自然顺序中的字符串比较以升序排列数组,则可以方便地获得正确的返回值。但是,在你的情况下,你想要相反的东西,所以否定它:

var a = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c"]
a.sort((i1, i2) => -i1.localeCompare(i2));
console.log(a);

...或者(doh)就做 i2.localeCompare(i1)相反。

关于JavaScript:Chrome 不正确地比较字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39833215/

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