Javascript Array sort () неправильно сортирует массив строк [дубликаты]

Если вы используете Linux, вы можете легко проверить эту команду с помощью этой команды

java -version ; \
echo 'System.err.println(javax.crypto.Cipher.getInstance("AES/CBC/PKCS5Padding").getMaxAllowedKeyLength("AES"));'  \
| java -cp /usr/share/java/bsh-*.jar bsh.Interpreter >/dev/null

Если вывод похож на этот, криптография с неограниченной силой недоступна

java version "1.7.0_76"
Java(TM) SE Runtime Environment (build 1.7.0_76-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.76-b04, mixed mode)
128
1
задан Keith Machado 18 January 2019 в 07:38
поделиться

2 ответа

Это связано с тем, что при отсутствии функции обратного вызова элементы сортируются после преобразования в кодовые единицы UTF-16. В вашем случае это может быть причиной того, что преобразованная в utf строка для Kelvin находится перед brandy, поэтому она сортируется в таком порядке.

Используйте localeCompare

const ary = ["Kevin", "brandy", "Andrew"];
const nary = ary.sort(function(a, b) {
  return a.localeCompare(b)

});
console.log(nary);

0
ответ дан brk 18 January 2019 в 07:38
поделиться

Один ответ лайнера является localeCompare()

const ary = ["Kevin", "brandy", "Andrew"];
ary.sort(function (a, b) {
    return a.toLowerCase().localeCompare(b.toLowerCase());
});
console.log(ary);

0
ответ дан Sudhir Ojha 18 January 2019 в 07:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: