javascript - Chrome 和 Firefox 中 Array.sort(比较函数) 的不同结果

标签 javascript google-chrome firefox

我正在使用 anArrayOfObjects.sort((a, b) => a.value - b.value),其中某些对象没有 value 属性.

这会导致 Firefox 和 Chrome 中出现不同的结果,Chrome 似乎会将没有 value 属性/未定义值的对象排序到最后,而 Firefox 则不会。

规范没有规定 Chrome 给出的结果,这意味着 Firefox 结果是错误的吗?或者这部分排序结果取决于特定的实现?

const data2 = [
  { 'name' : 'a', 'value' : 5 },
  { 'name' : 'b', 'value' : 2 },
  { 'name' : 'c' },
  { 'name' : 'd', 'value' : 1 }
];

console.log('before sorting: ', data2);

data2.sort((a, b) => a.value - b.value);

console.log('after sorting: ', data2);

最佳答案

两者都不是“错误的”。

未定义 - 未定义未定义 - 11 - 未定义 均返回 NaN NaN 与某些东西相比总是 false

这两个浏览器之间的差异可能是由于排序实现造成的。
使用的排序算法可能会给出不同的结果,具体取决于预先值的顺序以及实现如何处理 NaN

关于javascript - Chrome 和 Firefox 中 Array.sort(比较函数) 的不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73854983/

相关文章:

javascript - Breeze的executeQuery在IE11中比Chrome慢很多

firefox - 如何在运行时以编程方式更改 Firefox 配置?

javascript - 无法从 TIdHTTPCommandGet 过程 OnCommandGet 访问 .js 文件

javascript - 语法错误 : unexpected token "-"

Jquery ajax 随机错误仅在 Chrome 中出现

android - 1px 边框在放大移动 chrome 之前不会显示

jquery - 使用 Jquery 在 Firefox 中动画背景位置 y

c++ - 如何在最新的 firefox 中简单地测试 XPCOM 组件?

javascript - Angular CLI 在项目创建后添加 SASS

javascript - jquery相对路径和绝对路径