我有一个对象数组,如下所示:
[
{
name: s1,
isDefault: false
},
{
name: s2,
isDefault: true
},
{
name: s3,
isDefault: false
}
]
我想对这个数组进行排序,以便首先放置isDefault: true
元素,然后按字母顺序依次跟随此对象。
换句话说:
[
{
name: s2,
isDefault: true
},
{
name: s1,
isDefault: false
},
{
name: s3,
isDefault: false
}
]
我知道如何完成第一个条件:
objPanoramas.sort((a, b) => {
return a.isDefault < b.isDefault
})
如何整合第二个条件?
答案 0 :(得分:2)
objPanoramas.sort((a, b) => {
if (a.isDefault == b.isDefault) {
name1 = a.name;
name2 = b.name;
return name1<name2?-1:(name1>name2?1:0)
}
return a.isDefault < b.isDefault
})
答案 1 :(得分:2)
试试这个
objPanoramas = [{
name: "s1",
isDefault: false
},{
name: "s1",
isDefault: true
}, {
name: "s2",
isDefault: true
}, {
name: "s3",
isDefault: false
}]
objPanoramas.sort((a, b) => {
if ((a.isDefault && b.isDefault) || (!a.isDefault && !b.isDefault)) {
return a.name.localeCompare(b.name)
}else{
return !a.isDefault
}
})
console.log(objPanoramas);
答案 2 :(得分:1)