Сортировка по англ. и рус. алфавиту, могут быть нижние подчеркивания и друг. символы (ссылка на codepen)? Когда есть например нижнее подчеркивание, то у нас идет слово по англ после него по рус. и снова по англ. Порядок сортировки не верный, в начале только рус. потом англ или наоборот.
Пример:https://codepen.io/PolyakhAlex/pen/NXMbbZ?editors=1010
var array = ['hi', 'yo', 'whatup', 'Саша', 'bye', 'lol', '_Привет', '!Bob'];
var sortedArray = array.sort(function (a, b) {
if (a b) return 1;
return 0;
});
console.log(sortedArray); // ["!Bob", "_Привет", "bye", "hi", "lol", "whatup", "yo", "Саша"]

21 Авг 2019 в 06:22
166 +1
0
Ответы
1

Для корректной сортировки слов по английскому и русскому алфавиту с учетом специальных символов, следует использовать функцию localeCompare(). Вот исправленный код:

<!DOCTYPE html>
<html>
<head>
<title>Sorting Example</title>
</head>
<body>
<script>
var array = ['hi', 'yo', 'whatup', 'Саша', 'bye', 'lol', '_Привет', '!Bob'];
var sortedArray = array.sort(function (a, b) {
return a.localeCompare(b, 'ru', {sensitivity: 'base'});
});
console.log(sortedArray); // ["!Bob", "_Привет", "bye", "hi", "lol", "whatup", "yo", "Саша"]
</script>
</body>
</html>

Этот код использует метод localeCompare(), который позволяет сравнивать строки в текущей локали (в данном случае "ru" - русская локаль) с учетом специфических особенностей алфавита, таких как специальные символы, нижние подчеркивания и т. д. С помощью параметра 'sensitivity: 'base'' задается уровень чувствительности к регистру и другим различиям между символами.

После исправлений, массив будет корректно отсортирован в правильном порядке.

20 Апр 2024 в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 96 005 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир