【发布时间】:2023-01-11 17:19:18
【问题描述】:
我有一个对象数组,我想按特定值 f.x. 对它们进行排序。价格。这些对象有一个名为 "status" 的项目,它可以有一个 "available", "reserved" or "occupied"。
f.x 价格的排序工作得很好,但我想要实现的是获取排序后的数组并取出状态不是 "available" 的项目并将它们放在数组的底部,"reserved"在"occupied"之前,也是按价格排序的。
所以当我有一个随机排序的数组时
[{
id: 1619,
address: "Street 1",
rooms: 3,
price: 10695,
status: "Available",
},
{
id: 1620,
address: "Street 5",
rooms: 3,
price: 7859,
status: "Available",
},
{
id: 1626,
address: "Street 7",
rooms: 3,
price: 8595,
status: "Reserved",
},
{
id: 1624,
address: "Street 11",
rooms: 4,
price: 9795,
status: "Occupied",
},
{
id: 1624,
address: "Street 3",
rooms: 4,
price: 2856,
status: "Reserved",
}]
并使用
function sortList(property, list, order) {
list.sort(function (a, b) {
if (a[property] === b[property]) {
return 0;
}
const va = a[property];
const vb = b[property];
if (order === 'asc') {
return va < vb ? 1 : -1;
}
return va > vb ? 1 : -1;
});
}
sortList("price", list, "desc");
按价格排序 - 这很好用。然后我想获取排序后的列表并将“Reserved”和“Occupied”放在数组的底部 - 仍然按价格排序,所以我最终得到这样的数组:
[{
id: 1620,
address: "Street 5",
rooms: 3,
price: 7859,
status: "Available",
},
{
id: 1619,
address: "Street 1",
rooms: 3,
price: 10695,
status: "Available",
},
{
id: 1624,
address: "Street 3",
rooms: 4,
price: 2856,
status: "Reserved",
},
{
id: 1626,
address: "Street 7",
rooms: 3,
price: 8595,
status: "Reserved",
},
{
id: 1624,
address: "Street 11",
rooms: 4,
price: 9795,
status: "Occupied",
}]
【问题讨论】:
标签: javascript arrays sorting