我有一个可以按某些值排序的表。目前它是按特定的equipmentStatus排序的(不是按字母顺序,而是在下面的initialStatusSorting变量中定义的)。但是,如果它们具有相同的equipmentStatus值,我还需要按字母顺序对项目名称进行排序。我给出一个我现在拥有的示例,正如您所看到的,当name相同时,我希望对equipmentStatus进行排序
[
{
equipmentStatus: "available",
name: "ab pump"
},
{
equipmentStatus: "available",
name: "aa pump"
},
{
equipmentStatus: "available",
name: "zbe pump"
},
{
equipmentStatus: "allocated",
name: "tr pump"
},
{
equipmentStatus: "allocated",
name: "vx pump"
},
{
equipmentStatus: "allocated",
name: "re pump"
},
{
equipmentStatus: "RequestMaintenance",
name: "tt pump"
},
{
equipmentStatus: "RequestMaintenance",
name: "vd pump"
},
{
equipmentStatus: "RequestMaintenance",
name: "ph pump"
},
]现在,我有了以下函数来根据给定的规范对equipmentStatus进行排序,但是我仍然需要按字母顺序对name键上具有相同equipmentStatus的对象进行排序。
const initialStatusSorting = { "Available" : 1, "Allocated": 2, "RequestMaintenance": 3, "RequestRepair": 4 , "Pickup": 5, default: Infinity };
this.fetchOverviewPumps(requiredIds).then(() => {
this.overviewPumps.allPumps.sort(function (a, b) {
return (initialStatusSorting[a.equipmentStatus] || initialStatusSorting.default) - (initialStatusSorting[b.equipmentStatus] || initialStatusSorting.default) || a.equipmentStatus.localeCompare(b.equipmentStatus);
});
})```所以重述一下:我需要对两个键值进行排序,其中一个在特定的equipmentStatus上已经可以使用上面的排序功能了,但是我不能在具有相同equipmentStatus值的对象上进行额外的字母排序。
为了实现这一点,我需要在现有函数中添加什么?
感谢您的帮助!
,Coen
发布于 2021-04-05 05:36:31
如果equipmentStatus相同,要根据名称的字母顺序对其进行排序,您只需在代码中更改以下行:
return (initialStatusSorting[a.equipmentStatus] || initialStatusSorting.default) - (initialStatusSorting[b.equipmentStatus] || initialStatusSorting.default) || a.equipmentStatus.localeCompare(b.equipmentStatus);要这样做:
if (a.equipmentStatus !== b.equipmentStatus)
return (initialStatusSorting[a.equipmentStatus] || initialStatusSorting.default) - (initialStatusSorting[b.equipmentStatus] || initialStatusSorting.default) || a.equipmentStatus.localeCompare(b.equipmentStatus);
else
return a.name.localeCompare(b.name);https://stackoverflow.com/questions/66522587
复制相似问题