Как отсортировать данные, сгруппировав их - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь отсортировать массив на основе указанного порядка c. Сами данные будут включать фрукты, цены и т. Д. c. Я изо всех сил пытаюсь сделать функцию sort (), чтобы упорядочить порядок.

fruit = ["Banana", "Orange", "Apple", "Pear"];
const data = storeData.filter(...);

// sort the data
data.sort((a, b) => (a.fruit > b.fruit ? 1 : -1));   // output: apple, banana, orange, pear

Я ожидаю, что результат будет banana, orange, pear, apple вместо apple, banana, orange, pear или banana, orange, apple, pear. Я все еще учусь больше. Спасибо!

Кстати, я использую платформу Reactjs или javascript.

Ответы [ 2 ]

0 голосов
/ 24 марта 2020

Проверьте это:

fruit.sort( (itemA , itemB) => defaultOrder.indexOf(itemA) - defaultOrder.indexOf(itemB)); 
0 голосов
/ 24 марта 2020

Вот один из возможных вариантов:

Допустим, вам нужно отфильтровать фрукты, ничего не фильтруя, вы можете использовать следующее:

fruit.sort((a,b) => defaultOrder.i(a) > defaultOrder.indexOf(b) ? 1 : (-1));

В случае, если вам нужно используйте отфильтрованные данные, пожалуйста, измените fruit.sort на data.sort как;

data.sort((a,b) => defaultOrder.indexOf(a) > defaultOrder.indexOf(b) ? 1 : (-1));

, если вы хотите объединить методы, вот способ

fruit
.filter(a => a !== 'Banana')
.sort((a,b) => 
defaultOrder.indexOf(a) > defaultOrder.indexOf(b) ? 1 : (-1));

, если у вас есть массив объектов Вы можете go для следующего:

fruit.sort((x,y) => defaultOrder.findIndex(a => a == x.fruit  ) > defaultOrder.findIndex(b => b == y.fruit) ? 1 : (-1));

надеюсь, это поможет.

Бхавик

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...