मेरे पास दो एरे, पुराने और नए हैं, जो प्रत्येक स्थिति पर ऑब्जेक्ट्स रखते हैं। मैं कैसे सिंक या डेल्टा मिलेगा (क्या नया, अद्यतन और पुराने सरणी की तुलना में नई सरणी से हटा दिया जाता यानी)जावास्क्रिप्ट सिंक दो एरे (ऑब्जेक्ट्स)/डेल्टा
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"}
];
उपरोक्त डेटा के साथ
, कुंजी के रूप में आईडी का उपयोग कर, हम पाते हैं कि आईडी = 2 के साथ आइटम में एक अद्यतन शीर्षक है, आईडी = 3 के साथ आइटम हटा दिया गया है, और आईडी = 4 के साथ आइटम नया है।
क्या वहां कोई मौजूदा लाइब्रेरी है जिसमें उपयोगी कार्य हैं, या यह लूप और आंतरिक पाश का मामला है, प्रत्येक पंक्ति की तुलना करें ..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
}
}
नई, अद्यतन और हटाए जाने के लिए इस तरह की तुलना तीन बार करें?
आप बातें, एक छोटे से तेजी लाने सकता है अगर आईडी अद्वितीय हैं और आप आईडी के साथ किसी चीज़ का इस्तेमाल चाबियाँ के रूप में – Sirko
आपको समझा जाना चाहिए कि आउटपुट क्या है? तीन गुणों वाला एक वस्तु? '{जोड़ा गया: 4], बदल गया: [2], हटा दिया गया: [3]}' –
आउटपुट शायद तीन सरणी में सबसे अच्छा होगा। हटाए गए केवल आईडी की आवश्यकता होगी, जोड़ा और बदले में पूर्ण "पंक्ति"/ऑब्जेक्ट – Fergal