Сохраняет ли Javascript-фильтр заказ?

Я просмотрел документацию и, глядя на примеры, похоже, что фильтр сохраняет порядок исходного списка (хотя он возвращает новый). Могу ли я на это положиться?

Спецификация экстренного текста

MDN

Ни один из этих порядков сохранения ссылок. Должен ли я просто предположить, что не могу полагаться на сохраненный порядок?

Ответ 1

Да. Из spec,

  • Пусть выбранный будет результатом вызова внутреннего метода callbackfn [[Call]] с T как это значение и список аргументов, содержащий значения kValue, k и O.
  • Если ToBoolean (выбрано) true, тогда

    • Вызвать внутренний метод [[DefineOwnProperty]] A с аргументами ToString (to), Дескриптор свойств {[[Value]]: kValue, [[Writable]]: true, [[Enumerable]]: true, [[Конфигурируемый]]: true} и false.
    • Увеличить на 1.

Таким образом, элементы в возвращаемом массиве имеют тот же порядок, что и в исходном.

Ответ 2

Да, метод .filter() возвращает новый массив без фильтрованных элементов в том же порядке, что и в обычном режиме.

Порядок элементов является одной из основных характеристик массива.