javascript - JS Array.Sort IE 11 与 Chrome 的差异

标签 javascript google-chrome sorting internet-explorer internet-explorer-11

我编写的自定义排序函数有问题。在 Chrome 和 Firefox 中,排序正常,我的记录根据需要切换。当我在 IE 11 中运行代码时出现问题。这是我的示例 https://jsfiddle.net/azb90cgv/8/

在我看来,IE11 正在切换输入排序函数的值。

使用数据集 [A,B,C,D] Chrome 和 FF 按组合 (A,B)(B,C)(C,D) 对我进行排序 IE 11 将项目比较为 (B,A )(C,B)(D,C)

这是一个问题,因为我的行 return 1; 没有翻转我的记录 IE11 期望 -1 值。

我的目标:我希望数据按顺序排序,并且当存在重复时切换项目的原始顺序。 我是否忽略了什么?为什么运行方式不同?

最佳答案

您需要按原始顺序对另一个属性进行稳定排序。如果两个项目具有相同的序列,则使用此选项。

var points = [{ id: 1, Sequence: 4 }, { id: 2, Sequence: 3 }, { id: 3, Sequence: 3 }, { id: 4, Sequence: 1 }]
    order = true;
points.forEach(function (a, i) {
    a.order = i;
});

document.getElementsByTagName('button')[0].onclick = function () {
    points.sort(function (a, b) {
        return a.Sequence - b.Sequence || (order ? a.order - b.order : b.order - a.order);
    });
    order = !order;
    document.getElementById("out").innerHTML = JSON.stringify(points, 0, 4);
}
<button>Swap</button>
<pre id="out"></pre>

关于javascript - JS Array.Sort IE 11 与 Chrome 的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36018350/

相关文章:

jquery - 简单的 jQuery AJAX 请求在 Chrome 中不起作用(带有错误消息)

css - Google Chrome 与 GIMP 中的图像插值

python - 在 Python 中将项目插入不区分大小写的排序列表

java - 用Java对二维数组排序-跳过第一个索引

javascript - 如何获取复选框的最新选中值?

javascript - 在ajax中火回两次成功

google-chrome - Windows 上的 headless Chrome 和 Selenium?

postgresql - Postgres 中的运算符 ~<~

javascript - 将表单值传递给 react.js 中的 onclick 处理程序

javascript - 使用 javascript 原型(prototype)在链接点击后保留数据