Сортировка массива по возрастанию и убыванию reactjs

#reactjs #sorting

#reactjs #сортировка

Вопрос:

Я пытаюсь отсортировать свои данные по возрастанию по убыванию. Это мой код:

   const onSort = (sortKey) => {
  let sortCustomer = [...customers];
  sortCustomer.sort(function(a, b){
    if(a[sortKey] < b[sortKey]) { return -1; }
    if(a[sortKey] > b[sortKey]) { return 1; }
    return 0;
  })
  setcustomers(sortCustomer);
 

}

По возрастанию работает, но по убыванию не работает.

Комментарии:

1. Обратитесь к документации: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference /…

Ответ №1:

ваша функция сортировки предназначена только для порядка возрастания, для порядка убывания вы должны сделать это:

 const onSort = (sortKey) => {
  let sortCustomer = [...customers];
  sortCustomer.sort(function(a, b){
    if(a[sortKey] < b[sortKey]) { return -1; }
    if(a[sortKey] > b[sortKey]) { return 1; }
    return 0;
  })

  // create a variable to determine whether to use ascending or descending order
  if (order === 'desc') {
    sortCustomer.reverse()
  }

  setcustomers(sortCustomer);
}
 

Комментарии:

1. «порядок» не определен

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

Ответ №2:

Функция, в которую вы передаете, sort() ВСЕГДА будет сортировать в порядке возрастания, почему вы ожидаете, что она будет сортировать в порядке убывания?

 .sort(function(a, b){
    if(a[sortKey] < b[sortKey]) { return -1; }
    if(a[sortKey] > b[sortKey]) { return 1; }
    return 0;
  })
 

Чтобы отсортировать его в порядке убывания, необходимо выполнить следующее:

 .sort(function(a, b){
    if(a[sortKey] < b[sortKey]) { return 1; }
    if(a[sortKey] > b[sortKey]) { return -1; }
    return 0;
  })