Сортировка по емкости и имени в ReactJS с помощью array sort()

#javascript #arrays #reactjs #sorting

#javascript #массивы #reactjs #сортировка

Вопрос:

У меня есть один вопрос. Как я могу отсортировать элементы массива сначала по их емкости, а затем по первой букве их имени? Основная идея заключается в том, чтобы сначала отсортировать по емкости от низкой до высокой или от высокой до низкой, а затем, если два элемента имеют одинаковую емкость, эти два элемента должны быть отсортированы по первой букве их имени.

Вот базовый пример кода от меня

 myArray.sort((eventA, eventB) => {
      if (this.state.sort.highToLow.enabled) {
         return eventA.capacity > eventB.capacity ? -1 : 1;
     } else if (this.state.sort.lowToHigh.enabled) {
         return eventA.capacity > eventB.capacity ? 1 : -1;
     } else { return 0; }
     })
 

Ответ №1:

вы можете использовать метод сортировки Lodash

 _.sortBy(myArray, ['capacity', 'name']);
 

Ответ №2:

попробуйте что-то вроде этого. метод сортировки, проверка имени при одинаковой емкости.

 const data = [
  {
    name: "z",
    capacity: 2,
  },
  {
    name: "b",
    capacity: 1,
  },
  {
    name: "a",
    capacity: 1,
  },
];

data.sort((a, b) => {
  if (a.capacity === b.capacity) {
    return a.name > b.name ? 1 : -1;
  }
  return a.capacity - b.capacity;
});

console.log(data);