Hacker News new | ask | show | jobs
by mikeryan 2572 days ago
While your example reads a bit better, you’re now iterating through your list twice.
3 comments

Most code isn't performance-critical.

This pattern will probably be dominated by the time taken to filter and map, not loop iteration.

Does JavaScript have adapters to covert lists into generators or lazy iterators?
Unfortunately not in a way that can optimize these methods. This is one reason the Java Streams API, which has a similar purpose (e.g. map, filter, flatMap, reduce, etc.), is a better design IMO because you can chain together method calls without creating (and iterating) the full array at each step.
Technically there is no iteration in filter/map/reduce at all.
That's incorrect. All of those functions are implemented using iteration.

Consider this excerpt from the .map() polyfill on MDN:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...

    // 7. Let k be 0
    k = 0;

    // 8. Repeat, while k < len
    while (k < len) {
      // [loop body omitted]

      // d. Increase k by 1.
      k++;
    }