Функции компаратора возвращают NaN
, так как он получает две строки и выполняет вычитание, операция, которая не совсем определена для строк.
То, что вы должны иметь, это что-то вроде:
function(a,b){
return a>b? 1 : (a<b ? -1 : 0);
}
или вы можете использовать localeCompare
:
function(a,b){
return a.localeCompare(b);
}
Не забудьте относиться к делу надлежащим образом, например, "L" < "a"
пока "l" > "a"