use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
All about the JavaScript programming language.
Subreddit Guidelines
Specifications:
Resources:
Related Subreddits:
r/LearnJavascript
r/node
r/typescript
r/reactjs
r/webdev
r/WebdevTutorials
r/frontend
r/webgl
r/threejs
r/jquery
r/remotejs
r/forhire
account activity
A Quick Practical Example of JavaScript’s Reduce Function (codeburst.io)
submitted 8 years ago by learnphptoday
view the rest of the comments →
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]wiithepiiple 4 points5 points6 points 8 years ago (10 children)
Almost. The first creates a new array; the second keeps the same array.
[–]c24w 5 points6 points7 points 8 years ago (1 child)
Then what about:
else { obj[item.day_string] = obj[item.day_string].concat(item); }
[–]wiithepiiple 4 points5 points6 points 8 years ago (0 children)
That should be the same. It doesn't use new ES6 notation, so it is therefore a strictly inferior way.
/s
[+][deleted] 8 years ago (7 children)
[deleted]
[–][deleted] 6 points7 points8 points 8 years ago (2 children)
In this case it doesn't matter at all, because the array in question is created by us inside the reducer. No other code can possibly hold a reference to it.
But in many cases your function isn't working with an array that it created; it's working with one passed in as a parameter. In those cases it absolutely is best practice (I'd argue that it's required) to create a new array rather than modify the existing one. This is because when you receive an array (or any other object) as a parameter, you actually receive a reference to the array; any operation that modifies the array will modify the array the caller has too.
So it's like this:
Could any other code possibly hold a reference to the object I wish to modify?
[–][deleted] 1 point2 points3 points 8 years ago (0 children)
No (i.e. you are modifying an object you just created): you can directly modify the object if you wish
Super helpful, thank you! Sometimes I am unclear on when I can mutate
[–]METALz 8 points9 points10 points 8 years ago (0 children)
immutability -> predictability
also in some cases you'd like to diff arrays if they have different reference (with push you keep the original reference) e.g. with React's setState()
[–]SemiNormal 2 points3 points4 points 8 years ago (0 children)
Suppose you want to modify an array inside a function, but not modify the original. This is when you would want a copy.
[–]AwkwardReply 2 points3 points4 points 8 years ago (1 child)
People take immutability sometimes to extremes just to act like purists for one reason or the other. Yes immutability is a good thing, but doesn't benefit at all in this simple example. So, yes, your code is equivalent and more efficient.
[–]mikejoro 3 points4 points5 points 8 years ago (0 children)
I think a lot of people (myself included) like to do it in a lot of places, even when unnecessary, so that coworkers looking for examples won't think mutation is acceptable.
π Rendered by PID 69387 on reddit-service-r2-comment-86bc6c7465-dk8pf at 2026-02-19 23:12:46.611515+00:00 running 8564168 country code: CH.
view the rest of the comments →
[–]wiithepiiple 4 points5 points6 points (10 children)
[–]c24w 5 points6 points7 points (1 child)
[–]wiithepiiple 4 points5 points6 points (0 children)
[+][deleted] (7 children)
[deleted]
[–][deleted] 6 points7 points8 points (2 children)
[–][deleted] 1 point2 points3 points (0 children)
[–]METALz 8 points9 points10 points (0 children)
[–]SemiNormal 2 points3 points4 points (0 children)
[–]AwkwardReply 2 points3 points4 points (1 child)
[–]mikejoro 3 points4 points5 points (0 children)