Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Does Javascript filter preserve order?

Tags:

javascript

I looked at the documentation and while looking at examples it looks like filter preserves order of the original list (though it returns a new one). Can I rely on that?

Ecmascript spec

MDN

Neither of these reference preserving order. Should I just assume I can't rely on preserved order?

like image 748
ford prefect Avatar asked Sep 26 '16 20:09

ford prefect


2 Answers

Yes. From the spec,

  • Let selected be the result of calling the [[Call]] internal method of callbackfn with T as the this value and argument list containing kValue, k, and O.
  • If ToBoolean(selected) is true, then

    • Call the [[DefineOwnProperty]] internal method of A with arguments ToString(to), Property Descriptor {[[Value]]: kValue, [[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: true}, and false.
    • Increase to by 1.

So the items in the returned array have the same order than in the original one.

like image 128
Oriol Avatar answered Nov 18 '22 02:11

Oriol


Yes, the .filter() method returns a new array, without the filtered elements in the same order as initially.

The order of the elements is one of the main feature of a array.

like image 37
Rikard Avatar answered Nov 18 '22 01:11

Rikard