Нужно ли разделять звонки Loda sh, чтобы это работало? - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь отсортировать некоторые данные в коде моего клиентского интерфейса, но loda sh ведет себя странно.

Ни в одном из примеров я не нахожу использование данных в интерфейсе, поэтому я не уверен, что я делаю не так.

Предположим пример, где я хочу отсортировать товары по isInPriceList (по убыванию), listorder (по убыванию), имени (по возрастанию).

Смотрите мой пример stackblitz в https://stackblitz.com/edit/typescript-lodash-playground-kbtjbg

interface IProduct {
    name: string;
    isInPriceList: boolean;
    listOrder: number;
}

...add some data

const sortedData = _.orderBy( data, p => [ p.isInPriceList, p.listOrder, p.name ], [ "desc", "desc", "asc"]);

Не удается отсортировать данные в указанном порядке, однако это работает:

let correctlySortedData = _.orderBy( data, p => p.name, "asc");
correctlySortedData = _.orderBy( correctlySortedData, p => p.listOrder, "desc" );
correctlySortedData = _.orderBy( correctlySortedData, p => p.isInPriceList, "desc" );

Я предполагаю, что что-то есть неправильно со вторым параметром.

1 Ответ

1 голос
/ 13 февраля 2020

Вторым параметром должен быть итератор, разрешающий в массив имен (строк) параметров упорядочить следующим образом:

const sortedData = _.orderBy( data, ['isInPriceList', 'listOrder', 'name'], [ "desc", "desc", "asc"]);

см. Пример документации: https://lodash.com/docs/4.17.15#orderBy

...