Please correct me if I am wrong: Is the main benefit of .map(), .filter() other than the function they perform the fact that they provide a layer of abstraction? Returning new arrays with choice bits of data without mutating the original seems like abstraction in motion.
In fact, the map function borrows its origins in the functional paradigm principle (https://en.wikipedia.org/wiki/Functional_programming). In that vision of programming, we tend to use "pure functions", which are functions that don't mutate any of its arguments.
So, it's not really an abstraction but a choice:
In some cases, you don't want to change the original data, so, map may be a fit by default.
In some other cases, you have the choice. Using map has the advantage of reducing the possibility of side-effects (ex: other parts of the app sharing the same array, and not expecting to change), at the cost of duplicating data.
So, no one is better than the other, it really depends on what do you want to do.