That's usually a made-up issue ... the example code is using two maps instead of computing the entire thing once in a composed function **and** it already creates multiple copies of the initial Array.
Anyway, having `var log = DEBUG ? x => console.log(x) || x : x => x` in means you could do this: ```js const a = log([1, 2, 3] .map(square)) .map(plus1) .reduce(add); ``` but again, we are using multiple maps and a reduce so if we want to be realistic, and it's for debugging purpose only, I think using map would be just fine. Regards On Fri, Oct 16, 2015 at 3:17 PM, Eric Devine <[email protected]> wrote: > Array#map does the non-trivial operation of copying the entire array. In > the example for loging to the console, this behavior is unintended. Perhaps > an underscore-like tap method should be considered to be added to the Array > prototype for these cases. > > > On Fri, Oct 16, 2015 at 9:32 AM, Andrea Giammarchi < > [email protected]> wrote: > >> Like I've written before, if you need to return an array you can use map >> instead of forEach >> >> `arr.map(x => console.log(x) || x)` >> >> forEach has been like this since ever so while you wonder what kind of >> code would look like based on the fact forEach doesn't return anything, I >> actually wonder how come there are still people expecting forEach to return >> something. >> >> So, it would be a breaking change and actually it's not needed since you >> have map. >> >> If the new Array, and for debugging purpose, is not desired, use `var log >> = DEBUG ? x => console.log(x) || x : x => x` and abuse it as much as you >> like. >> >> Would any of this work? >> >> Regards >> >> >> >> On Fri, Oct 16, 2015 at 2:23 PM, Niloy Mondal <[email protected]> >> wrote: >> >>> > That'd be a compatibility break. >>> >>> Ugh... you mean people actually depend on `forEach` returning >>> `undefined` (which it always does) to do further task? >>> >>> I wonder what that kinda code would look like >.< >>> >>> On Fri, Oct 16, 2015 at 6:08 PM, Frankie Bagnardi <[email protected]> >>> wrote: >>> >>>> That'd be a compatibility break. >>>> >>>> If we end up getting :: though: >>>> >>>> ```js >>>> function logEach(){ >>>> this.forEach((x) => console.log(x)); >>>> return this; >>>> } >>>> >>>> >>>> const a = [1, 2, 3] >>>> .map(square) >>>> ::logEach() >>>> .map(plus1) >>>> .reduce(add); >>>> ``` >>>> >>>> You could make that a global variable so you can sprinkle it around >>>> your code in development. >>>> >>>> Having some developer tools in the language would be nice though. I >>>> don't even think console.log is in the spec. A global like Debug.logThis >>>> for example would be a more general ::-able. >>>> >>>> >>>> On Fri, Oct 16, 2015 at 5:32 AM, Andrea Giammarchi < >>>> [email protected]> wrote: >>>> >>>>> ```js >>>>> const a = [1, 2, 3] >>>>> .map(square) >>>>> .map(x => console.log(x) || x ) >>>>> .map(plus1) >>>>> .reduce(add); >>>>> ``` >>>>> >>>>> Regards >>>>> >>>>> >>>>> On Fri, Oct 16, 2015 at 10:13 AM, Niloy Mondal < >>>>> [email protected]> wrote: >>>>> >>>>>> Currently, `Array.prototype.forEach` returns `undefined`. It would be >>>>>> more >>>>>> useful if it returns the array itself. >>>>>> >>>>>> Say I have written some code like this... >>>>>> >>>>>> ```js >>>>>> const a = [1, 2, 3] >>>>>> .map(square) >>>>>> .map(plus1) >>>>>> .reduce(add); >>>>>> ``` >>>>>> >>>>>> For some reason, I am not getting the expected output. For debugging, >>>>>> I would >>>>>> like the print the values after each step. My first initial reaction >>>>>> is to >>>>>> put a `forEach` step in between and print the values like so... >>>>>> >>>>>> ```js >>>>>> const a = [1, 2, 3] >>>>>> .map(square) >>>>>> .forEach(x => console.log(x)) >>>>>> .map(plus1) >>>>>> .reduce(add); >>>>>> ``` >>>>>> >>>>>> Unfortunately, this does not work as `forEach` returns `undefined`. I >>>>>> now have >>>>>> to comment out all the code below it. Having the _plug and play_ >>>>>> behaviour for >>>>>> `forEach` would be very convenient. >>>>>> >>>>>> _______________________________________________ >>>>>> es-discuss mailing list >>>>>> [email protected] >>>>>> https://mail.mozilla.org/listinfo/es-discuss >>>>>> >>>>>> >>>>> >>>>> _______________________________________________ >>>>> es-discuss mailing list >>>>> [email protected] >>>>> https://mail.mozilla.org/listinfo/es-discuss >>>>> >>>>> >>>> >>> >> >> _______________________________________________ >> es-discuss mailing list >> [email protected] >> https://mail.mozilla.org/listinfo/es-discuss >> >> >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

