Object.entries()
एक ऐसा ऐरे लौटाता है जिसके तत्व एनेमरबल प्रॉपर्टी [key, value]
पेयर से मिलते- जुलते हैं object
। गुणों का क्रम वही है जो वस्तु के गुण मानों पर मैन्युअल रूप से लूप करके दिया जाता है।
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries#Description
Object.entries
समारोह रिटर्न लगभग सटीक उत्पादन आप के लिए पूछ रहे हैं, कुंजी को छोड़कर संख्या के बजाय तार कर रहे हैं।
const obj = {"1":5,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0};
console.log(Object.entries(obj));
यदि आपको संख्याओं की कुंजी की आवश्यकता है, तो आप कॉलबैक फ़ंक्शन के साथ परिणाम को एक नए सरणी में मैप कर सकते हैं जो प्रत्येक जोड़ी में कुंजी को प्रतिस्थापित करता है, जिसमें से संख्या के साथ मिलकर।
const obj = {"1":5,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0};
const toNumericPairs = input => {
const entries = Object.entries(input);
return entries.map(entry => Object.assign(entry, { 0: +entry[0] }));
}
console.log(toNumericPairs(obj));
मैं एक एरो फ़ंक्शन का उपयोग करता हूं और Object.assign
ऊपर दिए गए उदाहरण में मैप कॉलबैक के लिए ताकि मैं इस तथ्य को एकतरफा रख कर उस तथ्य को प्राप्त कर Object.assign
सकूं जो ऑब्जेक्ट को सौंपा जा रहा है, और एक इंस्ट्रक्शन एरो फ़ंक्शन का रिटर्न वैल्यू निर्देश का परिणाम है।
यह इसके बराबर है:
entry => {
entry[0] = +entry[0];
return entry;
}
जैसा कि टिप्पणियों में @TravisClarke द्वारा उल्लेख किया गया है, मैप फ़ंक्शन को छोटा किया जा सकता है:
entry => [ +entry[0], entry[1] ]
हालाँकि, जो मौजूदा सरणी को संशोधित करने के बजाय प्रत्येक कुंजी-मान जोड़ी के लिए एक नया सरणी बनाएगा, इसलिए बनाए गए कुंजी-मूल्य जोड़ी सरणियों की मात्रा को दोगुना कर देगा। हालांकि मूल प्रविष्टियाँ सरणी अभी भी सुलभ हैं, यह और इसकी प्रविष्टियाँ कचरा एकत्र नहीं की जाएंगी।
अब, भले ही हमारे इन-प्लेस पद्धति का उपयोग करते हुए अभी भी दो सरणियों का उपयोग किया जाता है जो कुंजी-मूल्य जोड़े (इनपुट और आउटपुट सरणियों) को पकड़ते हैं, सरणियों की कुल संख्या केवल एक द्वारा बदल जाती है। इनपुट और आउटपुट सरणियाँ वास्तव में सरणियों से भरी नहीं होती हैं, बल्कि सरणियों के संदर्भ में होती हैं और वे संदर्भ स्मृति में एक नगण्य मात्रा में जगह ले लेते हैं।
- प्रत्येक कुंजी-मान जोड़ी को संशोधित करके मेमोरी वृद्धि की नगण्य मात्रा में परिणाम किया जाता है, लेकिन इसके लिए कुछ और वर्ण टाइप करने की आवश्यकता होती है।
- प्रत्येक कुंजी-मान जोड़ी के लिए एक नई सरणी बनाने से आवश्यक मात्रा में मेमोरी दोगुनी हो जाती है, लेकिन कुछ कम वर्ण लिखने की आवश्यकता होती है।
आप एक कदम आगे जा सकते हैं और प्रविष्टियों की जगह को एक नए सरणी में मैप करने के बजाय प्रवेश सरणी को संशोधित करके विकास को पूरी तरह से समाप्त कर सकते हैं:
const obj = {"1":5,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0};
const toNumericPairs = input => {
const entries = Object.entries(obj);
entries.forEach(entry => entry[0] = +entry[0]);
return entries;
}
console.log(toNumericPairs(obj));
NaN
इसके बजाय वापस आ जाएगा। यदि आप स्ट्रिंग्स को अपनी कुंजी के रूप में उपयोग करना चाहते हैं, तो उनके उत्तर में दिए गए @Pila के अनुसार रिटर्न को बदल[Number(key), obj[key]]
दें[key, obj[key]]
याObject.entries
@Pila का उपयोग करें