Почему не работает sort()

не могу понять, почему не работает sort((a, b) => b - a), но когда делаю просто sort() - работает?

function isIsogram(str){
  return str.split('').sort((a,b) => a - b);
  
}

console.log(isIsogram("Dermatoglyphics"));


Ответы (1 шт):

Автор решения: Джонни Кэтсвилл

Потому что здесь

a - b

строки преобразуются в числа.

"D" -> NaN
"e" -> NaN
"r" -> NaN

Ваш компаратор всегда возвращает NaN.

Ваши односимвольные строки можно сравнить

(a, b) => a < b ? -1 : a > b ? 1 : 0

или так

(a, b) => a.codePointAt(0) - b.codePointAt(0)

А если нужно сравнивать не по кодам символов, а по языковым правилам, то можно так

(a, b) => a.localeCompare(b)
→ Ссылка