gpt4 book ai didi

Javascript使用优先级数组对对象数组进行排序

转载 作者:行者123 更新时间:2023-12-04 15:57:45 27 4
gpt4 key购买 nike

我有这个对象数组:

var eventList = [
{
eventName: "abc",
status: "completed"
},
{
eventName: "def",
status: "live"
},
{
eventName: "ghi",
status: "live"
},
{
eventName: "jkl",
status: "upcoming"
},
]
我想使用特定键的优先级数组对这些对象数组进行排序,例如 ["live", "upcoming", "completed"]对于状态,意味着所有实时事件首先出现,然后是即将到来的,然后是完成的。互联网上的答案似乎只能使用键对数组对象进行升序或降序排序。我该如何处理?

最佳答案

您可以使用 Array.prototype.sort() 带有排序数组的方法。

const eventList = [
{
eventName: 'abc',
status: 'completed',
},
{
eventName: 'def',
status: 'live',
},
{
eventName: 'ghi',
status: 'live',
},
{
eventName: 'jkl',
status: 'upcoming',
},
];

const order = ['live', 'upcoming', 'completed'];
eventList.sort((x, y) => order.indexOf(x.status) - order.indexOf(y.status));
console.log(eventList);

如果您想在排序时使索引搜索更快,可以使用 Map Object .

const eventList = [
{
eventName: 'abc',
status: 'completed',
},
{
eventName: 'def',
status: 'live',
},
{
eventName: 'ghi',
status: 'live',
},
{
eventName: 'jkl',
status: 'upcoming',
},
];

const order = ['live', 'upcoming', 'completed'];
const map = new Map();
order.forEach((x, i) => map.set(x, i));
eventList.sort((x, y) => map.get(x.status) - map.get(y.status));
console.log(eventList);

关于Javascript使用优先级数组对对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65628708/

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