#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;
})