2015-12-21 7 views
6

मैं एक मानचित्र पर एक for.. of पाश का उपयोग करने का this उदाहरण पढ़ रहा था, और मैं इस वाक्य रचना के साथ एक सा उलझन में था:ES6 पर for..of पाश का उपयोग करते हुए मानचित्र

var myMap = new Map(); 
myMap.set(0, "zero"); 
myMap.set(1, "one"); 

for (var [key, value] of myMap) { 
    console.log(key + " = " + value); 
} 

विशेष रूप से, मुझे समझ नहीं आता सरणी विनाशकारी हो रहा है। मैं समझता हूं कि आप let [one, two] = [1, 2]; जैसे कुछ करने के लिए सरणी विनाशकारी का उपयोग कर सकते हैं, लेकिन इस उदाहरण में क्या हो रहा है? myMap एक सरणी नहीं है तो यह सही मान क्यों प्राप्त कर रहा है?

एक और सवाल मेरे पास है यही वजह है कि destructuring में आदेश key, value है, लेकिन जब आप एक forEach() कर आदेश value, key है, यहाँ की तरह:

myMap.forEach((value, key) => { 
    console.log(key + " = " + value); 
}); 

उत्तर

10
for (var [key, value] of myMap) { 
    console.log(key + " = " + value); 
} 

for (let pair of myMap) { 
    var [key, value] = pair; 
    console.log(key + " = " + value); 
} 
की तरह है

तो यह myMap नहीं है जो काम करने के लिए विनाशकारी के लिए एक सरणी होना है; बल्कि, इसके प्रत्येक तत्व को एक सरणी होना चाहिए जब इसे फिर से चालू किया जाता है, और मानचित्र पर पुनरावृत्ति वास्तव में सरणी (कुंजी/मूल्य जोड़े) उत्पन्न करती है।

Map#forEach का तर्क आदेश शायद Array#forEach के साथ स्थिरता के लिए है, जो तर्क (item, index) के साथ फ़ंक्शन को कॉल करता है; बदले में, शायद ऐसा इसलिए होता है क्योंकि आपको हमेशा इंडेक्स की आवश्यकता नहीं होती है।

+0

सरल और स्पष्ट स्पष्टीकरण के लिए धन्यवाद! – saadq

+0

साफ़ और सरल। – void

2

myMap एक सरणी नहीं है तो यह सही मान क्यों प्राप्त कर रहा है?

मानचित्र के प्रोटोटाइप एक [Symbol.iterator] संपत्ति, मानचित्र के उदाहरण iterator contract लागू जिसका मतलब है कि है।

for of लूप ऑब्जेक्टर्स पर ऑब्जेक्टर्स पर लूप करने के लिए उपयोग करते हैं।

दूसरे शब्दों में, लूप के लिए सरणी की आवश्यकता नहीं है, उन्हें पुनरावृत्तियों की आवश्यकता है। Arrays केवल एक प्रकार के पुनरावृत्त हैं, नक्शे एक और हैं।

मानचित्रों के मामले में इटेटरेटर 2-तत्व सरणी उत्पन्न करता है जिसमें प्रत्येक पुनरावृत्ति के लिए कुंजी और मूल्य शामिल होता है। इसमें अतिरिक्त विधियां भी हैं जो आपको केवल चाबियों या मानों पर फिर से शुरू करने की अनुमति देती हैं।

संबंधित मुद्दे