У меня есть богатое веб-приложение на основе AJAX, которое использует JQuery + нокаут. У меня есть плагин JQuery, который обертывает мои модели представления нокаутом, чтобы выставлять полезные методы, такие как .reset(),.isDirty() и т.д.
У меня есть метод под названием .setBaseline(), который по существу принимает моментальный снимок модели данных после ее заполнения (через плагин отображения). Затем я могу использовать этот снимок, чтобы быстро определить, изменилась ли модель.
То, что я ищу, это некоторая функция общего назначения, которая может возвращать объект, который представляет различия между двумя объектами JavaScript, где один из объектов считается мастером.
Например, предположим, что это мой снимок:
var snapShot = {
name: "Joe",
address: "123 Main Street",
age: 30,
favoriteColorPriority: {
yellow: 1,
pink: 2,
blue: 3
}
};
Затем предположим, что данные в реальном времени выглядят следующим образом:
var liveData = {
name: "Joseph",
address: "123 Main Street",
age: 30,
favoriteColorPriority: {
yellow: 1,
pink: 3,
blue: 2
}
};
Мне нужна функция утилиты .getChanges(snapShot, liveData), которая возвращает следующее:
var differences = {
name: "Joseph",
favoriteColorPriority: {
pink: 3,
blue: 2
}
};
Я надеялся, что библиотека _. underscore может иметь что-то подобное, но я не мог найти ничего похожего на это.