gpt4 book ai didi

javascript - IE Array.sort 不使用比较函数排序

转载 作者:行者123 更新时间:2023-12-01 01:49:37 24 4
gpt4 key购买 nike

以下代码示例在 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;
})
);

最佳答案

您的排序比较函数的行为不一致。该函数应该返回 < 0 , 0 ,或> 0 ,不仅仅是10 。如果它没有返回这些值,那么您将给出 sort使用错误的信息,因为您告诉它 a 中的任何比较期望值不相等。不能保证END3将被传递为 a在任何时候,所以所有比较都将是“相等的”,所以结果是不确定的。 SP1, END3 之间也可能存在不一致。 (“等于”)和 END3, SP1 (“更大”)会影响排序算法的假设。

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


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

关于javascript - IE Array.sort 不使用比较函数排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51651434/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com