2016-09-26 21 views
12

Ich schaute auf die Dokumentation und bei der Betrachtung von Beispielen sieht es aus wie Filter bewahrt die Reihenfolge der ursprünglichen Liste (obwohl es eine neue zurückgibt). Kann ich mich darauf verlassen?Kann Javascript die Reihenfolge beibehalten?

Ecmascript spec

MDN

keiner dieser Referenz bewahren Ordnung. Sollte ich nur annehmen, dass ich mich nicht auf die erhaltene Ordnung verlassen kann?

+2

'filter ruft callbackfn einmal für jedes Element im Array auf ** aufsteigende Reihenfolge **' – Cristy

+3

Die ECMAScript-Spezifikation, die Sie verlinkt haben, beschreibt sehr gut eine beibehaltene Reihenfolge. –

+1

@squint Nachdem ich Oriols Antwort gelesen habe, glaube ich nicht, dass es aus der Spezifikation sofort ersichtlich ist. –

Antwort

15

Ja. Vom spec,

  • ausgewählt das Ergebnis Lassen Sie die von Aufrufen [[Aufruf]] interne Methode von callbackfn mit T als dieser Wert und Argumentliste enthält K-Wert, k und O.
  • Wenn ToBoolean ( ausgewählt) ist wahr, dann

    • aufrufen [[DefineOwnProperty]] interne Methode von A mit Argumenten ToString (-), Property Descriptor {[[Value ]]: K-Wert [[Beschreibbare]]: wahr [[Enumerable]]: wahr [[Configurable]]: wahr} und falsch.
    • Erhöhung zu durch 1.

So sind die Elemente in der zurückgegebene Array die gleiche Reihenfolge als im Original.

1

Ja, die Methode .filter() gibt ein neues Array zurück, ohne die gefilterten Elemente in der gleichen Reihenfolge wie ursprünglich.

Die Reihenfolge der Elemente ist eines der Hauptmerkmale eines Arrays.

Verwandte Themen