2016-09-26 69 views
12

我看着文档,看着例子,它看起来像过滤器保留原始列表的顺序(尽管它返回一个新的)。我可以依靠吗?Javascript过滤器保存顺序吗?

Ecmascript spec

MDN

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

+2

'过滤器为数组中的每个元素调用一次callbackfn,以**升序排列**' – Cristy

+3

您链接的ECMAScript规范非常清晰地描述了保留的顺序。 – 2016-09-26 20:54:21

+1

@squint在阅读Oriol的回答后,我认为从规范中不会立即明白。 –

回答

15

是的。从spec

  • 选择是调用的结果[[调用]] callbackfnŤ内部方法作为含有kValuethis值和参数列表kO
  • 如果ToBoolean选择)是,然后

    • 呼叫的带有参数ToString),Property Descriptor {[[值[[DefineOwnProperty]]内部方法]]:kValue,[[Writable]]:true,[[Enumerable]]:true,[[Configurable]]:true}和false
    • 增加由1

,返回的数组中的项目有相同的顺序比原来的一个。

1

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

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