This seems like a good place to share the idea, and it’s helpful that you provided use cases etc.
Is there a reason why you prefer the proposed syntax over the forEach loop you mentioned? Personally I like how the forEach is easy to understand, but maybe there are other examples of when the stream is useful and the polyfill is much more complex. > On 21 Jun 2019, at 16:32, Roma Bronstein <outsiden...@gmail.com> wrote: > > Hi, > > It's my first time suggesting a feature, hope I'm doing it correctly. > > I really like using Array.prototype.map(), Array.prototype.reduce() and all > related functions. > The code is more readable and it looks better. > However, when I want to write performance sensitive code, chaining these > functions is not a good approach. > For example, writing this: > // a is an Array of length N > const b = a.filter().map() > > will require 2 traversals over the whole array, up to 2*N iterations (if the > filter passes all items). > > This is why I often resort to writing this: > const b= [] > a.forEach(() => { > if (/*the filter condition*/) > b.push(/*mapping logic*/) > }) > > Which requires only N iterations. > > I suggest adding a capability to streamline items to these functions. > I get my inspiration from Redis's transaction syntax where you declare > starting a transaction and finally call EXEC in order to execute it. > So now I'll be able to write something like this: > const b = a.stream() > .filter() > .map() > .exec() > > Just to clarify the example: > I've declared that I'd like to stream array items of a. Then I've chained the > functions I'd like to items to pass through. > Finally I've activated it using the exec() function. > > I'm not sure if this is the best syntactical approach, but this example is > more intuitive to understand in my opinion. > > Another approach could be thinking about a "pipeline" operator like in UNIX > cli, providing a more generic capability to pipeline iterators. > > Again, I hope I'm doing this correctly and in the right forum. > And if so, I'd be happy to hear some feedback. > > Thanks, > Roma > > > > _______________________________________________ > es-discuss mailing list > es-discuss@mozilla.org > https://mail.mozilla.org/listinfo/es-discuss _______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss