Упорядочить массив по имени перечисления вместо значения - PullRequest
3 голосов
/ 12 апреля 2019

У меня есть перечисление:

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');

1 Ответ

1 голос
/ 12 апреля 2019

Вы можете использовать localeCompare до sort их в зависимости от значения строки:

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

Демонстрация воспроизведения Typescript (Нажмите «Выполнить»)

Если свойство является строковым и вы хотите отсортировать его по числовому значению, вы можете sort сделать это так:

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