Этот код не изменяет (сортирует) массив каталога, если это то, что вы ожидали, будет отсортирован только каталог параметров, так как сортировка применяется к результату отображения и фильтрации каталога, которые оба возвращают новые экземпляры массива.
Возможно, если вы опубликуете больше кода и исходных данных, мы сможем выяснить, что не так.
При этом не следует сравнивать строки таким образом, используя математический оператор, поскольку он может вести себя не так, как вы ожидаете.
В этом обсуждении из stackoverflow немного объясняются различия. В коротком порядке кодовой точки (используется при сравнении с>) не совпадает с фактическим алфавитным порядком.
Кроме того, возвращаемое значение функции сравнения должно быть 1, -1 или 0, потому что иногда не имеет значения замена одинаковых значений.
Например, сортировка [0,0,1,1,2,2,3,3] путем разрешения замены равных значений сравнения не имеет значения.
Но сортировка [{name: 'foo ', значение: 0}, {name:' bar ', value: 0}, {name:' fuu ', value: 1}, {name:' ber ', value: 1}] в соответствии со значением может изменитьпорядок исходного массива, когда это может быть нежелательно.
Это правда, что более ранняя реализация нативной сортировки не заботилась о равном значении сравнения и может иметь порядок в любом случае, но теперь реализации nore не соблюдают договор о том, чтобы не изменятьуже отсортированные массивы.
Если вам важен алфавитный порядок строк в кодировке Юникод, попробуйте использовать String.prototype.localeCompare .
Если вы сравниваете числа (например,и б) и если вам не нужно иметь дело сth NaN или бесконечность или не определено, более корректно и требует меньше собственных инструкций для возврата a-b
в порядке возрастания и b-a
в порядке убывания.