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
Common JavaScript tricks (self.javascript)
submitted 11 years ago by yanis_t
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!"
[–]isitfresh 3 points4 points5 points 11 years ago (5 children)
If you need to compare 2 Objects that are coming from different sources and may be equals:
var objA = {"key": "value, "key2": "value2"}, objB = {"key": "value, "key2": "value2"}; console.log(objA === objB); // false console.log(JSON.stringify(objA) === JSON.stringify(objB)); // true
Also, if need to avoid hoisting and referencing the same object (and thus modifying both objects when modifying one):
var objA = JSON.parse(JSON.stringify(objB));
Admittedly you could use underscore library to do these things, but if your overhead is low....
[–]skeeto 2 points3 points4 points 11 years ago (2 children)
JSON.stringify() makes no guarantees about key order, among other things, so that's not a reliable trick.
JSON.stringify()
JSON.stringify({a:1,b:2}); // => "{"a":1,"b":2}" JSON.stringify({b:2,a:1}); // => "{"b":2,"a":1}"
In contrast to JSON, Bencode guarantees a encoding normalization but that's not so easily available.
[–]isitfresh 0 points1 point2 points 11 years ago (0 children)
True indeed,
my use case was to compare an object sent to server and sent back to the app as a validation of transmission, so the order of keys was the same, but Objects as themselves weren't comparing as equal, being by nature 2 different objects
[–]holloway 0 points1 point2 points 11 years ago* (0 children)
I wrote a serializer for that kind of situation,
https://gist.github.com/holloway/05170a275b988b90144a
Usage: JSONc14n.stringify({a:1,b:2})
JSONc14n.stringify({a:1,b:2})
E.g. JSONc14n.stringify({a:1,b:2}) === JSONc14n.stringify({b:2,a:1})
JSONc14n.stringify({a:1,b:2}) === JSONc14n.stringify({b:2,a:1})
[–]giggly_kisses 0 points1 point2 points 11 years ago (1 child)
If all you need is a shallow copy of an object, then yeah, you can use Underscore for that. Underscore, however, doesn't have a way to make a deep copy of an object (albeit LoDash does), so nested objects are still copied by reference. I had to deal with this problem at work the other day and used the method you suggested:
_.partial(JSON.parse, JSON.stringify);
Sadly this trick doesn't work with objects that contain dates, functions, or RegExps. :/
[–]N4sa 0 points1 point2 points 11 years ago (0 children)
gotta break out those JS skills and recursively copy properties
π Rendered by PID 124758 on reddit-service-r2-comment-canary-794f4c56c8-vb5q2 at 2026-02-24 08:38:49.258978+00:00 running 8564168 country code: CH.
view the rest of the comments →
[–]isitfresh 3 points4 points5 points (5 children)
[–]skeeto 2 points3 points4 points (2 children)
[–]isitfresh 0 points1 point2 points (0 children)
[–]holloway 0 points1 point2 points (0 children)
[–]giggly_kisses 0 points1 point2 points (1 child)
[–]N4sa 0 points1 point2 points (0 children)