У
sort() есть ловушка: без функции сравнения метод превращает элементы в строки и сопоставляет их посимвольно. Поэтому [3, 1, 10, 2].sort() выдаёт [1, 10, 2, 3]: строка «10» начинается с «1» и оказывается раньше «2».Для чисел передайте правило
(a, b) => a - b. Отрицательный результат ставит a раньше b, поэтому массив идёт по возрастанию. Чтобы так же расположить товары от дешёвых к дорогим, сравнивайте их цены через a.price - b.price.Учтите, что
sort() меняет исходный массив. Если его надо сохранить, сортируйте копию: [...numbers].sort(...). Запустите все три варианта и сравните исходные данные с результатом, а затем разберите сортировку строк, дат и нескольких полей.
