javascript - Safari 浏览器 Javascript 数组似乎对字符串排序不正确

标签 javascript safari

在 Safari 控制台中:

var x = ["20", "21"]; x.sort(function(a,b){return b > a}); x
> ["20", "21"]

Chrome:

var x = ["20", "21"]; x.sort(function(a,b){return b > a}); x
> ["21", "20"]

不过,这在 Safari 中按预期工作(与 Chrome 匹配):

"20" > "21"
false

挠我的头。

最佳答案

Array#sort需要对您要排序的类型进行回调。

基本上您需要使用数字进行排序,因为字符串对字符串进行排序,而不是对数字进行排序。第一个按字符串排序,第二个按数值排序。

var x = ["20", "21", "2", "100", "10", "1", "3", "30"];

x.sort();
console.log(x);

x.sort(function (a, b) {
    return a - b; // implicit casting to Number
});
console.log(x);

关于javascript - Safari 浏览器 Javascript 数组似乎对字符串排序不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38415636/

相关文章:

css - Safari 和 Chrome 之间的字体大小和边距差异

iphone - Safari:如何根据 iPhone 尺寸调整浏览器大小(或其他解决方案)?

javascript - 在 Javascript 中验证多个表单

javascript - Vue Threejs 在较大的 JSON 文件上帧速率较慢

javascript - 如何在 JavaScript 中获取节点数据,例如内联样式和方向等

javascript - iPad 网络应用程序 : Detect Virtual Keyboard Using JavaScript in Safari?

bash - Jenkins 并推出带有扩展的 Safari

javascript - 如何在Vue中传递函数参数以使用axios发出GET请求?

php - 有谁知道开始使用 YUI 的好网站吗?

javascript - 为什么 Safari 或 Firefox 无法处理来自 MediaElementSource 的音频数据?