Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Comparing native javascript objects with jQuery [duplicate]

Possible Duplicate:
Object comparison in JavaScript

I have two native JavaScript objects:

var foo = { hello: 'world', holy: { shit: 'batman' } };
var bar = { ... };

I would like to compare the two (foo == bar).

like image 454
Russell Avatar asked Sep 24 '10 22:09

Russell


2 Answers

This works well, but only in some cases:

var obj1 = {n1: "v1", n2: "v2"},
    obj2 = {n1: "v1", n2: "v2"},
    obj3 = {n2: "v2", n1: "v1"},
    obj4 = {n2: "v2", n1: "v1", f: function(){}};


// this will work correctly:
JSON.stringify(obj1) == JSON.stringify(obj2); //true


// but this fails :(
JSON.stringify(obj2) == JSON.stringify(obj3); //false


// and this :(
JSON.stringify(obj3) == JSON.stringify(obj4); //true
like image 88
Joe Avatar answered Oct 23 '22 08:10

Joe


jQuery has no built-in utility for comparing objects. It's not really clear from your post what information you want to derive from your two objects. Are you trying to sort them?

Depending on what you are trying to do, you may be able to satisfy your use case by using one of jQuery's utility methods, though. See, for example: jQuery.extend, jQuery.each, jQuery.map, and jQuery.merge. jQuery is primarily concerned with manipulating DOM elements; it doesn't have a built-in feature for list sorting (though you may be able to find a plugin).

Check out the jQuery utilities documentation:

http://api.jquery.com/category/utilities/

Also, check out array.sort(), which apparently is built into javascript:

http://www.javascriptkit.com/javatutors/arraysort.shtml

like image 35
RMorrisey Avatar answered Oct 23 '22 09:10

RMorrisey