javascript - 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;
})
);
解决方案
返回-1
而不是0
在 else 块中。当比较方法返回时0
,它离开a
并b
保持不变。
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;
})
);
推荐阅读
- r - R - 列中多个因素的计数
- sql - 在某些行上重复一个值
- android - 从片段生成本地通知导致“片段未附加到活动错误”
- kubernetes - 使用负载均衡器在 GCP 上进行袜子商店
- python - 如何检查 a.keys() 中是否存在“0,1,2”,如果不存在则添加“0,1,2”?
- python - TypeError: cursor() 使用 flaskext.mysql 得到了一个意外的关键字参数“字典”
- postgresql - 重复计算曲目数量
- c - C fscanf 读取同一行两次?
- flutter - Flutter 的 kernel_blob.bin 是什么?
- javascript - Chrome 扩展将值从 Background.js 保存到存储中并在 popup.html 上显示