首页 > 解决方案 > array.prototype.sort 目前有不同的顺序?

问题描述

这是我的代码:

let arr = [
  { a: false, index: 1 },
  { a: true, index: 2 },
  { a: false, index: 3 },
  { a: true, index: 4 },
  { a: true, index: 5 },
]

arr.sort((a, b) => a.a && !b.a ? 1 : -1)

在 Chrome 中,返回

[
  {a: false, index: 1},
  {a: false, index: 3},
  {a: true, index: 2},
  {a: true, index: 4},
  {a: true, index: 5},
]

这是我的目标结果。

但我在 Safari 中找到了相同的代码:

[
  {a: false, index: 3},
  {a: false, index: 1},
  {a: true, index: 5},
  {a: true, index: 4},
  {a: true, index: 2},
]

他们有不同的结果?

毕竟我是这样解决这个问题的:

arr.sort(
  (a, b) =>
    !a.a && b.a
      ? -1
      : a.a === b.a
        ? 0
        : 1
)

我无法获得差异?

标签: javascriptarrayssorting

解决方案


浏览器有不同的实现sort。如果您想要的话,请使用另一个排序/过滤器对其进行更多组织或更改您当前的排序功能以考虑索引。


推荐阅读