gpt4 book ai didi

javascript - JS Array.prototype.sort() 在 Firefox 中失败,在 Chrome 中有效

转载 作者:行者123 更新时间:2023-11-30 11:01:40 24 4
gpt4 key购买 nike

出于某种原因,我的排序 在Firefox 中失败(安静地)。我相信我遇到了一个问题,即 Firefox 满足 Array.prototype.sort() 规范的实现与 Chrome 相比存在细微的潜在差异。

事情是......根据我在其他地方找到的一些评论,我看不出出了什么问题。

你能看出哪里出了问题吗?我们期望“仪表板”到达顶部,“设置”到达底部。其他一切都应该按字母顺序排列。在 Chrome 中工作,在 Firefox 中失败:

var cmsMenus = [{
label: "dashboard",
},
{
label: "settings",
},
{
label: "item 2",
},
{
label: "item 5",
},
{
label: "item 8",
},
];

//sort available menus
cmsMenus.sort((a, b) => {

// push dashboard to top
if (a.label.toLowerCase() == 'dashboard') {
return -1;
}
// push everything above settings
if (b.label.toLowerCase() == 'settings') {
return -1;
}
// alphabetically order everything else
if (a.label.toLowerCase() > b.label.toLowerCase()) {
return 1;
} else if (a.label.toLowerCase() < b.label.toLowerCase()) {
return -1;
}
return 0;
});

console.log(cmsMenus);

最佳答案

您可以考虑使用对称排序并尊重所有比较项目,例如 ab 并返回具有增量的优先级项目。

var cmsMenus = [{ label: "dashboard" }, { label: "settings" }, { label: "item 2" }, { label: "item 5" }, { label: "item 8" }];

cmsMenus.sort((a, b) =>
(b.label.toLowerCase() === 'dashboard') - (a.label.toLowerCase() === 'dashboard') ||
(a.label.toLowerCase() === 'settings') - (b.label.toLowerCase() === 'settings') ||
a.label.toLowerCase().localeCompare(b.label.toLowerCase())
);

console.log(cmsMenus);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - JS Array.prototype.sort() 在 Firefox 中失败,在 Chrome 中有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57493400/

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