जनरेटर फ़ंक्शन का उपयोग करके कृपया निल्स का उत्तरObject.entries और / या बर्गी का उत्तर देखें । हालांकि Object.entriesसवाल पूछे जाने के बाद भी यह कल्पना में नहीं था, यह स्टेज 4 पर था , इसलिए पॉलीफ़िल के लिए सुरक्षित था और अप्रैल 2016 (अभी) में वापस भी उपयोग किया गया था। ( यहां के चरणों में अधिक ।) और जनरेटर फ़ंक्शन ES2015 में थे। ओपी ने विशेष रूप से मध्यस्थों से बचने के लिए कहा, और जबकि जनरेटर पूरी तरह से नहीं बचता है, यह नीचे या (थोड़ा) की तुलना में बेहतर काम करता है Object.enties।
FWIW, का उपयोग कर Object.entries:
[name, value]पास करने के लिए सरणियों की एक सरणी बनाता हैnew Map
Mapनिर्माता सरणी पुनरावर्तक पाने के लिए पर एक समारोह कॉल; ऐरे बनाता है और ऐरे इंटरएटर ऑब्जेक्ट बनाता है।
Mapनिर्माता का उपयोग करता है कि इटरेटर वस्तु प्रविष्टियों (पाने के लिए [name, value]सरणियों) और नक्शा बनाने
जनरेटर का उपयोग करना:
- जनरेटर फ़ंक्शन को कॉल करने के परिणामस्वरूप एक जनरेटर ऑब्जेक्ट बनाता है
Mapनिर्माता से पुनरावर्तक प्राप्त करने के लिए है कि जनरेटर वस्तु पर एक समारोह कॉल; जनरेटर वस्तु रिटर्न ही है
Mapनिर्माता (पुनरावर्तक के रूप में) जनरेटर वस्तु प्रविष्टियों (प्राप्त करने के लिए उपयोग करता [name, value]सरणियों) और नक्शा बनाने
तो: एक कम मध्यस्थ (से सरणी) Object.entries )।
हालाँकि, उपयोग Object.entriesकरना सरल है और उस सरणी को बनाना 99.999% समय का मुद्दा नहीं है। तो वास्तव में, या तो एक। लेकिन वे दोनों नीचे से बेहतर हैं। :-)
मूल उत्तर:
एक को इनिशियलाइज़ करने के लिए Map, आप किसी भी इटेरेटर का उपयोग कर सकते हैं, जो की / अरै के अरेंजमेंट जैसे अरैज़ के रूप में की / वैल्यू पेयर देता है:
const map = new Map([
['foo', 'bar']
]);
ऑब्जेक्ट से मैप में कोई अंतर्निहित रूपांतरण नहीं है, लेकिन यह आसानी से किया जाता है Object.keys:
const map = new Map();
let obj = {foo: 'bar'};
Object.keys(obj).forEach(key => {
map.set(key, obj[key]);
});
आप निश्चित रूप से, अपने आप को एक कार्यकर्ता कार्य दे सकते हैं कि
function buildMap(obj) {
let map = new Map();
Object.keys(obj).forEach(key => {
map.set(key, obj[key]);
});
return map;
}
फिर
const map = buildMap({foo: 'bar'});
या यहाँ एक और अधिक l33t- लग रहा है (यह अभी भी एक बात है?) संस्करण:
function buildMap(obj) {
return Object.keys(obj).reduce((map, key) => map.set(key, obj[key]), new Map());
}
(हां, Map#setनक्शा संदर्भ देता है। कुछ का तर्क है कि यह एक अपमानजनक हैreduce ।)
या हम वास्तव में अस्पष्टता के ऊपर जा सकते हैं:
const buildMap = o => Object.keys(o).reduce((m, k) => m.set(k, o[k]), new Map());
नहीं, मैं असली के लिए ऐसा कभी नहीं करूंगा। :-)
Object.entriesवास्तव में बेहतर दृष्टिकोण हैObject.keys, और बर्गी का जनरेटर फ़ंक्शन दृष्टिकोणObject.keysया तो की तुलना में थोड़ा अधिक प्रत्यक्ष हैObject.entries।