按枚举名称而不是值对数组排序

时间:2019-04-12 13:55:32

标签: javascript typescript lodash

我有一个枚举:

export enum Foo{
    AA= 0,
    ZZ= 1,
    AB= 2,
    ER = 5
}

我希望将Bars作为属性enum包含foo的{​​{1}}以枚举的名称(AA,AB,ER,ZZ)排序,而不是在数值(0,1,2,5)上。

我正在使用lodash来帮助我,但我似乎无法使其正常工作:

const orderedBars = _.orderBy(unorderedBars, 'foo');

1 个答案:

答案 0 :(得分:1)

您可以根据字符串值使用localeComparesort

unorderedBars.sort((a,b) => Foo[a.foo].localeCompare(Foo[b.foo]))

Demo on Typescript playgorund(单击“运行”)

如果该属性是字符串,并且您想根据数值对其进行排序,则可以sort像这样:

unorderedBars.sort((a, b) => Foo[a.foo] - Foo[b.foo])