![](/img/trans.png)
[英]Simple javascript line behaving differently in chrome and firefox
[英]Javascript compare function behaving differently between Firefox and Chrome
我确定我只是在这里遗漏了一些简单的逻辑,这让我发疯。
我在 Chrome v95.0.4638.69 和 Firefox v93.0 中工作
我有一个对象数组,其中的数据如下所示: [ {id:1, name:"Jake", active:true}, {id:2, name:"Sam", active:false} ]
我的比较函数如下所示:
let compare = (a, b) => {
const Aname = a.name.toUpperCase();
const Bname = b.name.toUpperCase();
if (a.active && b.active) {
return Aname > Bname ? 1 : Aname < Bname ? -1 : 0;
}
else {
return a.active ? 1 : -1;
}
};
我想要做的是所有具有 active:true 的对象应该首先按字母顺序排序名称,然后是按字母顺序排序的 active:false 对象。 在 Chrome 中,它正是这样做的。 在 Firefox 中,active = false 的对象位于列表的顶部。 我犯了什么愚蠢的错误?
active
属性排序时,如果第一个对象的属性设置为true
以在属性设置为false
的对象之前对其进行排序,则应返回-1
。else
分支中两个对象应该被视为相等,您也不会返回0
。let compare = (a, b) => {
const Aname = a.name.toUpperCase();
const Bname = b.name.toUpperCase();
if (a.active === b.active) {
return Aname > Bname ? 1 : Aname < Bname ? -1 : 0;
}
else {
return a.active ? -1 : b.active ? 1: 0;
}
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.