Проверяет понимание поведения сортировки в JavaScript при сравнении элементов разных типов данных.
Метод Array.prototype.sort() в JavaScript без аргументов преобразует каждый элемент массива в строку и сортирует их в порядке следования кодовых точек Unicode. Это означает, что числа сортируются как строки, что часто приводит к нелогичным результатам.
const numbers = [10, 2, 1, 20];
numbers.sort();
console.log(numbers); // [1, 10, 2, 20]Здесь 10 оказывается перед 2, потому что строка "10" меньше строки "2" по лексикографическому порядку.
Если массив содержит разные типы (числа, строки, объекты), sort() преобразует их в строки. Объекты становятся строкой "[object Object]", что может вызвать путаницу.
const mixed = [1, "apple", { name: "test" }, 3];
mixed.sort();
console.log(mixed); // [1, 3, "apple", { name: "test" }]Для числовой сортировки передайте функцию сравнения:
numbers.sort((a, b) => a - b); // [1, 2, 10, 20]Для строк используйте localeCompare для учета локали.
Всегда используйте функцию сравнения при сортировке, если элементы не являются строками, чтобы избежать неожиданного поведения из-за приведения типов.