दिलचस्प पोस्ट
हडसन और जेनकिंस के बीच कैसे चयन करें? कौन सा एक अच्छा अभ्यास है, एक शाब्दिक फ़ाइलशैली या एक टाइपोग्राफ? एक ही यूआरएल पर एक नए के साथ छवि को ताज़ा करें क्या कोई स्पष्ट, सरल शब्दों में मुझे संग्रह का चयन कर सकता है? स्ट्रैग से केवल NUMBER प्राप्त करने के लिए रेगेक्स git में नंगे साझा भंडार की अवधारणा एंड्रॉइड पर फास्ट वीडियो संपीड़न जावा का उपयोग टेक्स्टफील्ड पर टैप करने पर तिथिपिक्क प्रदर्शित करें उपयोग स्कीमा के उपयोग से एक सूची स्वत: तारों को NoSuchBeanDefinitionException प्रदान करता है एंड्रॉइड इन्टेंट को अनुकूलित करें। ACTION_SEND अन्य डेवलपर्स के लिए एक ढांचा या लायब्रेरी कैसे तैयार करें, सुरक्षित तरीके से? jQuery के चेकबॉक्स ने राज्य परिवर्तित ईवेंट को चेक किया PHP में मशीन का आईपी पता है :: 1 लेकिन क्यों? विंडोज पर, "आयात टेन्स्फ्लो" चल रहा है, "_pywrap_tensorflow" नामक कोई मॉड्यूल नहीं उत्पन्न करता है

अर्रे (लेन) प्रारंभकर्ता में अपरिभाषित मान

विचार करें:

var a = Array(3); var b = [undefined,undefined,undefined]; 

क्या कारण है कि a.map और b.map अलग परिणाम उत्पन्न करते हैं?

 a.map(function(){ return 0; }); //produces -> [undefined,undefined,undefined] b.map(function(){ return 0; }); //produces -> [0,0,0] 

वेब के समाधान से एकत्रित समाधान "अर्रे (लेन) प्रारंभकर्ता में अपरिभाषित मान"

सरणी कंस्ट्रक्टर दिए गए लम्बाई के साथ एक सरणी बनाता है। यह चाबी नहीं बनाती है Array.prototype.map का कॉलबैक फ़ंक्शन केवल सूची में मौजूद तत्वों के लिए निष्पादित होता है।
यही है, सभी मान जो कुंजी (पूर्णांक) से जुड़े हैं 0 ≤ i < लंबाई

  • Array(3) की शून्य कुंजी है, इसलिए .map का कॉलबैक कभी भी ट्रिगर नहीं हुआ है।
  • [void 0, void 0, void 0] में तीन कुंजियां हैं, जिसके लिए कॉलबैक फ़ंक्शन निष्पादित होती है।

     Array(3).hasOwnProperty(0); // false [void 0, void 0, void 0].hasOwnProperty(0); // true 

विनिर्देश और इसके पॉलीफ़िल का उल्लेख एमडीएन में किया गया है। पंक्ति 47 पर, if (k in O) { दिखाता है कि गैर-मौजूद कुंजी का उपयोग कॉलबैक फ़ंक्शन द्वारा नहीं किया जाता है।

एमडीएन से :

कॉलबैक केवल सरणी के इंडेक्स के लिए लागू किया जाता है, जो कि मूल्य निर्दिष्ट करता है; अनुक्रमितों के लिए इसे लागू नहीं किया जाता है जिन्हें हटा दिया गया है या जिन्हें कभी मूल्य नहीं सौंपा गया है

सरणी के a , आपने 3 की एक सरणी को चालू कर दिया है, लेकिन किसी भी मान को असाइन नहीं किया है मानचित्र फ़ंक्शन को असाइन किए गए मानों वाले कोई तत्व नहीं मिलते हैं, इसलिए यह एक नई सरणी का उत्पादन नहीं करता है।

सरणी b , आपने 3 तत्वों की एक सरणी को प्रारंभ किया है, प्रत्येक मूल्य के साथ undefined । मानचित्र फ़ंक्शन को 3 तत्व असाइन किए गए मानों के साथ मिलते हैं, और नए सरणी में उनमें से प्रत्येक के लिए नए मान के रूप में '0' देता है।

a एक खाली सरणी है जिसमें तत्व नहीं है, इसलिए मानचित्र फ़ंक्शन तत्वों के बिना खाली सरणी का उत्पादन करता है (प्रति विनिर्देश, नक्शे परिणाम का उत्पादन करता है तभी यदि [[हैसिप्रोपर्टी]] सच है।) b तीन तत्वों की एक सरणी है, इसलिए मैप का उत्पादन होता है तीन तत्वों की सरणी

map केवल मौजूदा गुणों को बदलता है, रिक्त सूचकांक नहीं।

इसलिए, यदि आप इसे काम करना चाहते हैं, तो आपको पहले सरणी को भरना होगा।

ऐसा करने के कई तरीके हैं, उदाहरण के लिए:

  • .fill() , ES6 में पेश किया

     console.log(new Array(3).fill().map(function(){ return 0; }));