Сортировка по англ. и рус. алфавиту, могут быть нижние подчеркивания и друг. символы (ссылка на 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
185 +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
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир