Javascript过滤器是否保留订单?

时间:2016-09-26 20:51:03

标签: javascript

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

Ecmascript spec

MDN

这些参考保留顺序都不是。我应该假设我不能依赖保留的命令吗?

2 个答案:

答案 0 :(得分:25)

是。来自spec

  
      
  • 选择是使用 T 调用 callbackfn 的[[Call]]内部方法作为此值和参数列表的结果包含 kValue k O
  •   
  • 如果ToBoolean已选择)为 true ,则

         
        
    • 使用参数ToString to ),Property Descriptor {[[Value]]调用 A 的[[DefineOwnProperty]]内部方法: kValue ,[[Writable]]: true ,[[Enumerable]]: true ,[[Configurable]]: true }和 false
    •   
    • 增加到 1。
    •   
  •   

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

答案 1 :(得分:1)

是的,.filter()方法返回一个新数组,没有过滤的元素与incially的顺序相同。

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