Как правильно отсортировать строку в алфавитном порядке?
// Создать функцию, которая упорядочит буквы в строке "екважбигёзд" в алфавитном порядке и возвратит строку в обратном порядке ("кизжёедгвба").
string = "екважбигёзд";
function sortAndReverse(string) {
return string.split('').sort().reverse().join('');
}
console.log(sortAndReverse(string));
Получаю вывод: ёкизжедгвба А нужен: кизжёедгвба
Я так понимаю нужно использовать LocaleCompare? Исправьте мой код пожалуйста, чтобы он работал верно
Ответы (2 шт):
Автор решения: Владлен Волков
→ Ссылка
function sortInAlphabetic(str) {
function sortFn(a, b) {
return a.toLowerCase().charCodeAt(0) - b.toLowerCase().charCodeAt(0)
}
return str.split('').sort(sortFn).join('')
}
Автор решения: Alexander Lonberg
→ Ссылка
const string = "екважбигёзд"
const collator = new Intl.Collator('ru')
function sortAndReverse(string) {
return string.split('').sort((a,b)=>collator.compare(a,b)).reverse().join('')
}
console.log(sortAndReverse(string))
UPD: Исходя из комментариев @Qwertiy @wololo @teran немного модифицируем и убираем лишний revers
const string = "екважбигёзд"
const compare = (new Intl.Collator('ru')).compare
function sortAndReverse(string, reverse = false) {
return string.split('')
.sort((a, b) => ((reverse ? -1 : 1) * compare(a, b)))
.join('')
}
console.log(sortAndReverse(string))
console.log(sortAndReverse(string, true))