首页 > 解决方案 > IE Array.sort 不使用比较功能进行排序

问题描述

这是在 IE 11 中无法正常工作的代码示例。

id = END3 的元素应该是最后一个。

只是不要告诉我我需要手动编写排序。实现它并不是什么大不了的事,但真的吗?!

var list = [{
    id: "SP1"
  },
  {
    id: "SP4"
  },
  {
    id: "END3"
  },
  {
    id: "SP2"
  }
];

console.log(
  list.sort(function(a, b) {
    if (a.id === "END3") {
      return 1;
    }

    return 0;
  })
);

标签: javascriptsortinginternet-explorer-11

解决方案


返回-1而不是0在 else 块中。当比较方法返回时0,它离开ab保持不变。

var list = [{
    id: "SP1"
  },
  {
    id: "SP4"
  },
  {
    id: "END3"
  },
  {
    id: "SP2"
  }
];

console.log(
  list.sort(function(a, b) {
    if (a.id === "END3") {
      return 1;
    }

    return -1;
  })
);

文档


推荐阅读