Mam dwie tablice, stare i nowe, które przechowują obiekty w każdej pozycji. Jak zsynchronizować lub znaleźć Delta (czyli to, co jest nowe, zaktualizowane i usunięte z nowej tablicy w porównaniu do starej tablicy)Synchronizacja JavaScript dwie tablice (obiektów)/znajdź deltę
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"}
];
Z powyższych danych, używając identyfikatora jako klucz, by stwierdzić, że mamy item z id = 2 ma zaktualizowany tytuł, element o id = 3 został usunięty, a element o id = 4 jest nowy.
Czy istnieje istniejąca biblioteka, która ma przydatne funkcje, czy jest to przypadek pętli i wewnętrznej pętli, porównaj każdy wiersz ... .eu.
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
}
}
Czy dokonujesz tego rodzaju porównania trzy razy, aby znaleźć nowe, zaktualizowane i usunięte?
Można przyspieszyć trochę, jeśli Identyfikatory są unikalne i użyć obiektu z identyfikatorem jako klucze. – Sirko
Powinieneś wyjaśnić, co jest wynikiem? Obiekt z trzema właściwościami? '{added: 4], zmieniono: [2], usunięto: [3]}' –
Dane wyjściowe będą prawdopodobnie najlepsze w trzech tablicach. Usunięty będzie potrzebował tylko identyfikatorów, dodane i zmienione wymagałoby pełnego "wiersza"/obiektu – Fergal