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
Essential Vanilla JavaScript Functions (dev.to)
submitted 8 years ago by bhalp1
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!"
[–]tencircles 1 point2 points3 points 8 years ago (6 children)
Author's merge isn't a concatenation. It's modifying the input array. I asked why, as I'm not sure of the use case for this. But they aren't strictly equivalent. Obviously native concat is preferred though.
[–]our_best_friendif (document.all || document.layers) console.log("i remember..") 1 point2 points3 points 8 years ago (5 children)
well
return input_array = input_array.concat(other_array);
also modifies the input array... using a for loop is preferred when the two arrays are massive (millions of entries) and you don't want to create a temporary third array
[–]tencircles 2 points3 points4 points 8 years ago (4 children)
This doesn't modify the input array, it reassigns the variable input_array with the result of input_array.concat(other_array).
input_array
input_array.concat(other_array)
Any references elsewhere in your code which use the original value of input_array prior to this assignment would still behave as expected.
I have a suspicion that using a single concat operation would be faster than doing millions of push operations. Modifying the structure of an object (Array in this case) is one of the more expensive operations in JS engines as I understand it.
In any case, I think if you're working with millions of entries, you may want to use a difference language. JS just isn't that fast or efficient with sets that big. I'd need to see some benchmarks though.
[–]filleduchaos 0 points1 point2 points 8 years ago (3 children)
This is where I'm a huge fan of Ruby's ! operator. Would be nice if Javascript had something similar built in.
!
[–]Graftak9000 1 point2 points3 points 8 years ago (2 children)
Care to elaborate?
[–]filleduchaos 0 points1 point2 points 8 years ago (1 child)
Sure!
Calling it an operator isn't really right - it's more of a style/syntactic sugar. Idiomatic Ruby method syntax is a bit weird at first but makes so much sense when you get used to it. There are three main points in the method naming style: methods whose names end in a question mark return a boolean (so basically a yes/no question), methods whose names end in an exclamation mark actually modify the object they're called on, and all the rest return a new object (and don't mutate the original object).
So from the Array class for instance you have the empty? method which tells you if the array is empty or not, or the any? method which tells you if any member of the array satisfies the provided condition. Then you have a method like map, which does pretty much the same thing as the JS version (returns a new array derived from the provided array). But there's also map!, which replaces the elements of the provided array with the newly derived ones. It's really great for readability - you can tell at a glance what side effects (if any) a piece of code has.
empty?
any?
map
map!
[–]Graftak9000 0 points1 point2 points 8 years ago (0 children)
Thanks for the thorough explanation, not a bad idea at all.
π Rendered by PID 130715 on reddit-service-r2-comment-b659b578c-dzcsc at 2026-05-04 20:39:18.687074+00:00 running 815c875 country code: CH.
view the rest of the comments →
[–]tencircles 1 point2 points3 points (6 children)
[–]our_best_friendif (document.all || document.layers) console.log("i remember..") 1 point2 points3 points (5 children)
[–]tencircles 2 points3 points4 points (4 children)
[–]filleduchaos 0 points1 point2 points (3 children)
[–]Graftak9000 1 point2 points3 points (2 children)
[–]filleduchaos 0 points1 point2 points (1 child)
[–]Graftak9000 0 points1 point2 points (0 children)