Javascript过滤器是否保留订单?

for*_*ect 33 javascript

我查看了文档,在查看示例时,看起来过滤器保留了原始列表的顺序(尽管它返回了一个新的).我可以依靠吗?

Ecmascript规范

MDN

这些参考保留顺序都不是.我应该假设我不能依赖保存的订单吗?

Ori*_*iol 34

是.从规格来看,

  • 选择是调用的[[调用]]内部方法的结果callbackfnŤ作为该值,并包含参数列表kValue,ķ,和ö.
  • 如果ToBoolean(selected)为true,那么

    • 调用的[[DefineOwnProperty]]内部方法带有参数的ToString(),属性描述符 {[[价值]]:kValue,[可写]]:,[可枚举]]:,[[配置]] :true },false.
    • 增加 1.

因此返回数组中的项目与原始项目中的项目顺序相同.


Rik*_*ard 8

是的,该.filter()方法返回一个新数组,其中过滤后的元素的顺序与最初相同。

元素的顺序是数组的主要特征之一。