gpt4 book ai didi

javascript - 如何获得一致的数字排序结果?

转载 作者:行者123 更新时间:2023-11-28 17:00:45 26 4
gpt4 key购买 nike

数字排序在不同的浏览器中给我不同的值:

function compareNumbers(a, b) {
return a - b;
}

['B', 'C', 'A'].sort(compareNumbers);

Chrome 和 Safari 不会改变顺序,但在 Firefox 中我得到了

['A', 'C', 'B']

如何在浏览器之间获得一致的排序?

我实际上想要实现的是按数字和字典顺序对数组进行排序。例如,在 Chrome 和 Safari 中,

[5, 11, 'B', 'C', 8, 'A'].sort().sort(compareNumbers);

似乎完成了任务,即

[5, 8, 11, 'A', 'B', 'C']

在 Firefox 中我必须做

[5, 11, 'B', 'C', 8, 'A'].sort().reverse().sort(compareNumbers);

得到相同的结果。

最佳答案

您可以像这样更改 comapreFuncion:

const arr = [5, 11, 'B', 'C', 8, 'A']
arr.sort((a, b) => a - b || a.toString().localeCompare(b.toString()))
console.log(arr)

如果比较的两个项目都是数字,则减法将决定顺序。如果其中一个是字母表,a-b 将返回 NaN,即 falsy值(value)。然后,将检查 || 中的第二个条件,并使用 localeCompare 按字母顺序对它们进行排序。

关于javascript - 如何获得一致的数字排序结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57589169/

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