gpt4 book ai didi

javascript - 如何使用枚举中的值对数组进行排序?

转载 作者:搜寻专家 更新时间:2023-10-30 21:18:59 47 4
gpt4 key购买 nike

我想使用枚举对数组元素进行排序,我想知道该怎么做,我尝试使用 switch 语句但没有成功。

   const enum Order {
Start = 'Start',
Run = 'Run',
End = 'End',
}

const predicate (a, b) => // TODO

const data = [Order.End, Order.Run, Order.Start]

const result = data.sort(predicate)

// wanted result is: // Start, Run, End

最佳答案

通常对于枚举,值已经是可比较的。

const enum Order {
Start = 0,
Run = 1,
End = 2,
}

const data = [Order.End, Order.Run, Order.Start];

const result = data.sort();

console.log(result);

非常量枚举甚至可以映射到字符串值,如下所示:

enum Order {
Start = 0,
Run = 1,
End = 2,
}

const data = [Order.End, Order.Run, Order.Start];

const result = data.sort();

console.log(result.map((val) => Order[val]));

但在您的情况下,如有必要,您可以将它们转换为易于排序的值(假设您希望避免按字母顺序排列)。

const enum Order {
Start = 'Start',
Run = 'Run',
End = 'End',
}

const predicate = (a, b) => {
const map = {};
map[Order.Start] = 1;
map[Order.Run] = 2;
map[Order.End] = 3;

if (map[a] < map[b]) {
return -1;
}

if (map[a] > map[b]) {
return 1;
}

return 0;
}

const data = [Order.End, Order.Run, Order.Start];

const result = data.sort(predicate);

console.log(result);

关于javascript - 如何使用枚举中的值对数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53478504/

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