MDN documentation for JSON.stringify के अनुसार:निर्धारित करने के लिए कैसे एक JSON ऑब्जेक्ट संशोधित नहीं किया गया है?
गैर सरणी वस्तुओं के गुण किसी विशेष क्रम में stringified होने की गारंटी नहीं कर रहे हैं। के भीतर स्ट्रिंग के भीतर एक ही ऑब्जेक्ट के ऑर्डर करने पर भरोसा न करें।
मुझे यह निर्धारित करने की उम्मीद थी कि ऑब्जेक्ट के एक स्ट्रिंग संस्करण को कैश करके कोई ऑब्जेक्ट बदल गया है, फिर उसे ऑब्जेक्ट के बाद के स्ट्रिंगिफाइड संस्करण से तुलना कर रहा है। ऑब्जेक्ट के माध्यम से पुनरावर्ती रूप से पुनरावृत्ति करने और तुलना करने से यह बहुत आसान लग रहा था। समस्या यह है कि JSON.stringify फ़ंक्शन निर्धारित नहीं है, जब मैं एक ही ऑब्जेक्ट को स्ट्रिंग करता हूं तो तकनीकी रूप से एक अलग स्ट्रिंग प्राप्त कर सकता हूं।
मेरे पास अन्य विकल्प क्या हैं? या क्या ऑब्जेक्ट समानता निर्धारित करने के लिए मुझे एक बुरा तुलना फ़ंक्शन लिखना है?
आप [इस 'JSON' कार्यान्वयन] (https://github.com/douglascrockford/JSON-js) पर एक नजर है और यह इतना है कि कुंजी हल कर रहे हैं को संशोधित कर सकता है । –
शायद थोड़ा असंबंधित है, लेकिन ध्यान दें कि एक * पूरी तरह से * निर्धारक स्ट्रिंगिंग फ़ंक्शन संभव नहीं है: 'JSON.stringify ({get a() {return Math.random()}}; '। – pimvdb
यह अधिक हो सकता है, लेकिन आप किसी ऑब्जेक्ट में 'चेंज' ईवेंट सेट करने के लिए बैकबोन जेएस का उपयोग कर सकते हैं और यदि यह बदलता है तो यह आपके इच्छित कार्य को बंद कर देगा। यह पूरी लाइब्रेरी का एक छोटा टुकड़ा है, लेकिन यह वही हो सकता है जो आप खोज रहे हैं। – Seth