यह वास्तव में जावास्क्रिप्ट में एक बहुत ही आम पैटर्न है।
आपको कुंजी से जुड़े सूची में एक तत्व जोड़ने की आवश्यकता है, यदि कोई अस्तित्व में नहीं है तो एक नई सूची बनाएं।
एक महत्वपूर्ण कोड है से जुड़े सूची प्राप्त करने के लिए:
M[key]
लेकिन यह रिटर्न undefined
अगर key
मौजूद नहीं है।
जावास्क्रिप्ट ||
(तार्किक-या) ऑपरेटर का काफी उपयोगी अर्थशास्त्री है: यदि बायीं ओर सत्य है तो इसे वापस करें, अन्यथा मूल्यांकन करें और दाहिने तरफ वापस आएं। अभिव्यक्ति: इसलिए
M[key] || (M[key] = [])
M[key]
के साथ जुड़े सूची, वर्तमान हैं, अन्यथा हिस्सा (M[key] = [])
मूल्यांकन किया जाता है देता है। यह काम करता है क्योंकि जावास्क्रिप्ट में एक सरणी (खाली होने पर भी) सत्य है और undefined
गलत है।
असाइनमेंट ऑपरेटर =
(जो जावास्क्रिप्ट में एक सामान्य ऑपरेटर है और अभिव्यक्ति के बीच में उपयोग किया जा सकता है) असाइनमेंट करता है तो उसके द्वारा निर्दिष्ट मूल्य को वापस देता है।
इस प्रकार पूरी चीज कुंजी से जुड़ी सूची लौटाती है या M
में कुंजी अज्ञात होने पर एक नई खाली सूची बनाता है।
किसी सरणी में तत्व को धक्का देना <array>.push(x)
है और डॉट के बाईं ओर भाग कोई अभिव्यक्ति हो सकता है।
(M[key] || (M[key] = [])).push(x);
इसलिए बाएं हाथ की अभिव्यक्ति द्वारा वापस सूची में x
जोड़ देगा।
"विस्तारित संस्करण इस प्रकार दिखाई देगा:
if (!M[key]) {
M[key] = [];
}
M[key].push(x);
खबरदार है कि जावास्क्रिप्ट में शब्दकोशों के रूप में वस्तुओं का उपयोग कर, क्योंकि विरासत में मिला के कुछ सदस्यों देखभाल की आवश्यकता होती M = {}
और key = "constructor"
साथ उदाहरण के लिए कि कोड विफल हो जाएगा
यह है के रूप में एक ही बात '(एम [कुंजी] = एम [कुंजी] || [])। धक्का (ELEM)' जिसका अर्थ है कि यदि 'एम [कुंजी]' एक ** falsy ** मान है, तो इसे एक खाली सरणी के रूप में शुरू किया जाएगा, और उसके बाद, तत्व 'elem' सरणी के अंत में जोड़ा जाएगा' एम [कुंजी] ' – jherax