Tôi có hai mảng, cũ và mới, giữ đối tượng ở mỗi vị trí. Làm thế nào tôi có thể đồng bộ hóa hoặc tìm đồng bằng (tức là những gì đang mới, cập nhật và xóa khỏi mảng mới so với các mảng cũ)JavaScript đồng bộ hai mảng (của đối tượng)/tìm delta
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"}
];
Với các dữ liệu trên, sử dụng id như chìa khóa, chúng tôi thấy rằng mục có id = 2 có tiêu đề cập nhật, mục có id = 3 bị xóa và mục có id = 4 là mới.
Có thư viện hiện có ở đó có chức năng hữu ích hay không hoặc là trường hợp vòng lặp và vòng lặp bên trong, so sánh từng hàng..ví dụ.
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
}
}
Thực hiện loại so sánh này ba lần, để tìm mới, cập nhật và xóa?
Bạn có thể điều tốc độ lên một chút, nếu id là duy nhất và bạn sử dụng một đối tượng với id như là chìa khóa. – Sirko
Bạn nên giải thích đầu ra là gì? Một đối tượng có ba thuộc tính? '{added: 4], changed: [2], deleted: [3]}' –
Đầu ra có thể là tốt nhất trong ba mảng. Các xóa sẽ chỉ cần ID, thêm và thay đổi sẽ cần đầy đủ "hàng"/đối tượng – Fergal