Сравнение собственных javascript-объектов с jQuery
Возможный дубликат:
Сравнение объектов в JavaScript
У меня есть два собственных JavaScript-объекта:
var foo = { hello: 'world', holy: { shit: 'batman' } };
var bar = { ... };
Я хотел бы сравнить два (foo == bar).
Ответы
Ответ 1
Это хорошо работает, но только в некоторых случаях:
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
Ответ 2
jQuery не имеет встроенной утилиты для сравнения объектов. Из вашего сообщения не совсем ясно, какую информацию вы хотите получить от двух ваших объектов. Вы пытаетесь их отсортировать?
В зависимости от того, что вы пытаетесь сделать, вы, возможно, сможете удовлетворить ваш прецедент, используя один из методов утилиты jQuery. См., Например: jQuery.extend
, jQuery.each
, jQuery.map
и jQuery.merge
. jQuery в первую очередь занимается манипулированием элементами DOM; он не имеет встроенной функции для сортировки списка (хотя вы можете найти плагин).
Проверьте документацию утилиты jQuery:
http://api.jquery.com/category/utilities/
Кроме того, проверьте array.sort()
, который, по-видимому, встроен в javascript:
http://www.javascriptkit.com/javatutors/arraysort.shtml