JavaScript синхронизирует два массива (объектов) / находит дельту
У меня есть два массива, старый и новый, которые содержат объекты в каждой позиции. Как бы я синхронизировал или нашел дельту (то есть, что нового, обновлено и удалено из нового массива по сравнению со старым массивом)
var o = [
{id:1, title:"title 1", type:"foo"},
{id:2, title:"title 2", type:"foo"},
{id:3, title:"title 3", type:"foo"}
];
var n = [
{id:1, title:"title 1", type:"foo"},
{id:2, title:"title updated", type:"foo"},
{id:4, title:"title 4", type:"foo"}
];
Используя приведенные выше данные, используя id в качестве ключа, мы обнаружили бы, что элемент с id = 2 имеет обновленный заголовок, элемент с id = 3 удаляется, а элемент с id = 4 является новым.
Существует ли существующая библиотека с полезными функциями, или это случай цикла и внутреннего цикла, сравните каждую строку ... например.
for(var i=0, l=o.length; i<l; i++)
{
for(var x=0, ln=n.length; x<ln; x++)
{
//compare when o[i].id == n[x].id
}
}
Делать такое сравнение три раза, чтобы найти новое, обновленное и удаленное?