Typcript - сортировка строк по убыванию

Я пытаюсь сортировать string[] по убыванию. Пока что я сделал код ниже:

let values = ["Saab", "Volvo", "BMW"]; // example 

values.sort();
values.reverse();

Он работает, но я пытаюсь выяснить, есть ли лучший способ сделать это.

Ответы

Ответ 1

Вам нужно создать функцию сравнения и передать ее как параметр функции сортировки:

values.sort((one, two) => (one > two ? -1 : 1));

Ответ 2

Более актуальный ответ: вы можете использовать String.prototype.localCompare(), чтобы получить числовое значение для сравнения

Простой пример:

let values = ["Saab", "Volvo", "BMW"];
values.sort((a, b) => b.localeCompare(a))

Это также не вызывает предупреждений TypeScript, так как выводом localCompare является число

Больше информации и дополнительных параметров функции можно увидеть здесь https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare

Ответ 3

Используйте следующий код для сортировки массива в порядке возрастания и убывания.

const ascending: any= values.sort((a,b) =>  (a > b ? 1 : -1));
const descending: any= values.sort((a,b) => (a > b ? -1 : 1))