【问题标题】:Order array by name of enum instead of value按枚举名称而不是值对数组排序
【发布时间】:2019-04-12 13:55:32
【问题描述】:

我有一个枚举:

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

我希望我的Bars,它包含enum 作为属性foo,按枚举名称(AA、AB、ER、ZZ)排序,而不是按数值(0 , 1, 2, 5)。

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

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

【问题讨论】:

    标签: javascript typescript lodash


    【解决方案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])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-30
      • 2021-04-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多