Накратко
sort() променя самия масив. Без функция за сравнение стойностите се сравняват чрез текстовото им представяне.
Полезно е да знаеш
За числово възходящо подреждане използвай явна функция за сравнение: numbers.sort((a, b) => a - b). Без такава sort() преобразува елементите в текст и ги сравнява по UTF-16 кодови единици, което може да даде неочакван числов ред. [1]
Например [2, 10, 3].sort() става [10, 2, 3]. С (a, b) => a - b резултатът е [2, 3, 10]. Отрицателният резултат на функцията поставя a преди b, положителният — след него.
Втората честа грешка е предположението, че оригиналът остава непокътнат. sort() подрежда на място и връща същия масив. [1] Ако искаш да запазиш входа от числа, направи копие: const ordered = [...numbers].sort((a, b) => a - b);.
При обекти уточни кое свойство сравняваш. Редът по цена, заглавие и дата са различни задачи. Една функция за сравнение трябва да отговаря на избраното правило, а не просто да връща случаен true или false.
Източници
За повече подробности и проверка на информацията: