दिलचस्प पोस्ट
फ्रैगमेंट में क्रिएटिव्यू और ऑनव्यू के बीच अंतर VBA Excel में प्रगति पट्टी सी # में टाइप करने के लिए स्ट्रिंग कन्वर्ट करें PHP में डायरेक्टरी ट्रैवर्सल को रोकना लेकिन पथ को अनुमति देना टॉमकेट में जड़ में अपने आवेदन को नियोजित करना जावा, 'लोकलहोस्ट: 10.0' का उपयोग करके DISPLAY चर के मूल्य के रूप में X11 विंडो सर्वर से कनेक्ट नहीं हो सकता पीडीओ के साथ एकल पंक्ति, सिंगल कॉलम प्राप्त करना इंटरनेट कनेक्शन का परीक्षण करने का सबसे तेज़ तरीका AesManaged का उपयोग करके "पैडिंग अमान्य है और हटाया नहीं जा सकता" एंकर टैग से एंकर टेक्स्ट और यूआरएल निकालने के लिए जावास्क्रिप्ट रेगेक्स java.io.FileNotFoundException: (प्रवेश निषेध है) जावास्क्रिप्ट में एक तत्व का चयन कैसे करें JAXB का उपयोग करते हुए जर्सी 1.6 के साथ JSON आउटपुट का उत्पादन कैसे करें क्या मैं web.config में maxJsonLength के लिए एक असीमित लंबाई निर्धारित कर सकता हूँ? यूनिक्स टाइमस्टैम्प को डेटटाइम कन्वर्ट और अजगर में इसे वापस परिवर्तित करें

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

विचार करें:

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] 

Solutions Collecting From Web of "अर्रे (लेन) प्रारंभकर्ता में अपरिभाषित मान"

सरणी कंस्ट्रक्टर दिए गए लम्बाई के साथ एक सरणी बनाता है। यह चाबी नहीं बनाती है 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; }));