JavaScript sincroniza dos matrices (de objetos) / find delta
Tengo dos matrices, antiguas y nuevas, que contienen objetos en cada posición. Cómo sincronizar o encontrar el delta (es decir, qué es nuevo, actualizado y eliminado de la nueva matriz en comparación con la matriz anterior)
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"}
];
Con los datos anteriores, usando id como clave, encontraríamos que el elemento con id = 2 tiene un título actualizado, el elemento con id = 3 se elimina y el elemento con id = 4 es nuevo.
¿Existe una biblioteca por ahí que tenga funciones útiles, o es un caso de bucle y bucle interno, compara cada fila ... e.g?
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
}
}
¿Hace este tipo de comparación tres veces, para encontrar nuevas, actualizadas y eliminadas?