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 <
andrea.giammar...@gmail.com> 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
> 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
>> 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 <
>>> andrea.giammar...@gmail.com> 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 <
niloy.monda...@gmail.com> 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
> 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
>>>
>>
>
> ___
> 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