У вас есть два решения.
Первое (грязное): просто сортируйте и .reverse()
массив каждый раз:
this.contractList.sort((a, b) => {
const nameA = a.filename.toUpperCase();
const nameB = b.filename.toUpperCase();
if (nameA < nameB) {
return this.sortedValue === 'fileName' ? -1 : 1;
}
if (nameA > nameB) {
return this.sortedValue !== 'fileName' ? 1 : -1;
}
return 0;
})
.reverse();
Так что каждый раз, когда это будетбыть отсортирован и перевернут.После сортировки по возрастанию она будет снова отсортирована (без изменений) и перевернута (с изменениями).Еще одно изменение, другая сортировка (без изменений) и другое обратное (изменение).
Второе (лучше): запомните порядок последней сортировки (asc / desc) и в зависимости от этого значенияизменить значение с -1
на 1
:
const newSorting = this.lastSortingOrder === 'asc' ? 1 : -1;
this.lastSortingOrder = this.lastSortingOrder === 'asc' ? 'desc' : 'asc';
this.contractList.sort((a, b) => {
const nameA = a.filename.toUpperCase();
const nameB = b.filename.toUpperCase();
if (nameA < nameB) {
return this.sortedValue === 'fileName' ? -1 * newSorting : newSorting;
}
if (nameA > nameB) {
return this.sortedValue !== 'fileName' ? newSorting : -1 * newSorting;
}
return 0;
});
, что изменит порядок этой сортировки в зависимости от последнего значения переменной this.lastSortingOrder
;