JSonCmp - जावास्क्रिप्ट की तुलना सही ढंग से करने में

यहाँ जावास्क्रिप्ट ऑब्जेक्ट को JSon में क्रमबद्ध किया गया है:

var source1 = '[{"vConfig":{"vType":"objectview","serverItemType":"TrackerObject"}}]'; 


और यहाँ एक और जावास्क्रिप्ट ऑब्जेक्ट है, जिसे JSon में भी सीरियल किया गया है:

 var source2 = '[{"vConfig":{"serverItemType":"TrackerObject","vType":"objectview"}}]'; 


उनके पास समान संरचना, समान पैरामीटर, इन मापदंडों में समान मूल्य हैं। सभी संकेतों से, हमारे पास source1 और source2 में एक ही बात है।

लेकिन जावास्क्रिप्ट दुभाषिया, निश्चित रूप से, हमारे साथ सहमत नहीं है। और वह यथोचित रूप से मानता है कि source1 और source2 अलग-अलग तार हैं। और अगर हम उन्हें वापस लेने की इच्छा करते हैं, तो हमें अलग-अलग मेमोरी पतों पर दो ऑब्जेक्ट मिलते हैं और ... एक-दूसरे के बराबर भी नहीं।

और अगर, इसके अलावा, आप Ext.js के साथ काम करते हैं, उदारता से अपनी कक्षाएं उत्पन्न करते हैं और jSon के बारे में नहीं भूलते हैं, तो यह कुल ग्रहण तक पहुंच सकता है। JSons में एकत्र किए गए नियंत्रणों के बारे में जानकारी के इन विशाल चादरों की तुलना कैसे करें? या पेड़ की तरह की वस्तुओं को छाँट दें, जहाँ प्रत्येक क्षेत्र में कुछ अन्य उप-फ़ील्ड पहले से ही बनाए गए हैं?

केवल एक ही रास्ता है - आपको मूल्य से तुलना करने का एक तरीका खोजने की आवश्यकता है, मेमोरी में सेल द्वारा नहीं, बल्कि अधिक लचीले रूप से। समान उन वस्तुओं पर विचार किया जाना चाहिए जिनके लिए समान फ़ील्ड में समान मान हैं । इस दृष्टिकोण से, हमारे source1 निश्चित रूप से source2 बराबर है।

और इसलिए अगली साइकिल का जन्म हुआ - JSonCmp । जावास्क्रिप्ट में वस्तुओं की तुलना करने के लिए एक सरल और बहुत उपयोगी कार्य। बेशक, मुझे इसे लिखने के कई प्रयास मिले, लेकिन प्रत्येक कार्यान्वयन ने समस्या का केवल एक ही भाग हल किया - नतीजतन, मैंने सभी दिलचस्प विचारों को एक में लाया, साथ ही साथ एक दो को जोड़कर ...

इसका उपयोग करना सरल है - बस jsoncmp.js कनेक्ट करें और फिर कॉल करें:

 jSonCom(object1, object2); 


यदि ऑब्जेक्ट में समान जानकारी है, तो फ़ंक्शन सही वापस आ जाएगा। नहीं तो झूठा।

Ext.js उपयोगकर्ता समान एल्गोरिथ्म का उपयोग कर सकते हैं, लेकिन प्लगइन आवरण में - jsoncmp.ext.js । कोड इस तरह दिखेगा:

 Ext.ux.util.Object(object1, object2); 


तुलना नियम इस प्रकार हैं:


मुझे उम्मीद है कि यह एक छोटी और शायद अपूर्ण विशेषता थोड़ी है, लेकिन आपके काम को सरल करेगा।

Source: https://habr.com/ru/post/In174091/


All Articles