2016-07-10 5 views
1

Я использую плагин с API для событий start и stop. Когда я начинаю перетаскивать элемент в сетке, он создает сериализованный массив всех данных в его текущем состоянии.jQuery сравнить два сериализованных объекта

Когда элемент отбрасывается, он также создает сериализованный массив данных.

Я хочу сравнить эти два набора данных, чтобы увидеть, изменилось ли оно вообще. Я не хочу запускать вызов базы данных, чтобы обновить размещение сетки, если пользователь начал перетаскивать что-то, а затем вернул его в предыдущее место.

Я попытался их сравнить, используя ==, и я также использовал jSON.stringify, прежде чем сравнивать, но прочитал, что он может обеспечить смешанные результаты.

Есть ли простой способ сравнить два объекта?

enter image description here

ответ

3

== проверяет ссылки объекта равны (не сравнивает содержимое).

Для сравнения глубоких объектов вы можете использовать lodash's isEqual().

1

Если вы не возражаете некоторые неэлегантность, вы могли бы сделать что-то вроде этого:

var obj1 = [{x:1},{x:2}]; 
 
var obj2 = [{x:1},{x:2}]; 
 
var obj3 = [{x:1},{x:3}]; 
 

 

 
function isSameObject(o1, o2) { 
 
    return JSON.stringify(o1) == JSON.stringify(o2); 
 

 
} 
 

 
alert('is same obj 1 and obj 2?' + isSameObject(obj1, obj2)); 
 
alert('is same obj 1 and obj 3?' + isSameObject(obj1, obj3));

Смежные вопросы