questions - javascript programs



इस स्थिति में.map() क्या कर रहा है? (3)

आप अद्यतन सवाल के बाद। अन्य उत्तर आपको मानचित्र के बारे में जानकारी प्रदान करते हैं

यह उत्तर देने के लिए कि सरणी और स्ट्रिंग अलग-अलग क्यों दिखते हैं

स्ट्रिंग कंस्ट्रक्टर 1 पैरामीटर String(thing) को स्वीकार करते हैं, जबकि सरणी नया ऐरे (एलिमेंट, एलिमेंट 1 [, ... [, एलिमेंट]])

https://code.i-harness.com

Chrome कंसोल का उपयोग करना, यह मेरा इनपुट और आउटपुट है:

[0].map(Array);

[[0, 0, [0]]]; // output

यहां क्या हो रहा है?

संपादित करें

इसका कारण मुझे उत्सुक बनाता है क्योंकि कुछ ऐसा है

[0].map(String);

वापस होगा

["0"];

और नहीं

["0", "0", "String"]

यह पुकार

[0].map(Array);

आपको वही परिणाम देता है जैसे कि आपने कुछ ऐसा लिखा है:

[0].map(function (value, index, array) {
    return Array(value, index, array);
})

मानचित्र फ़ंक्शन तीन मापदंडों के साथ Array फ़ंक्शन को बुला रहा है: तत्व का मूल्य, तत्व का सूचकांक और पूरे सरणी। Array को यह कॉल आपको 3 तत्वों के साथ Array देता है: मूल्य (संख्या 0 ), सूचकांक (संख्या 0 ), संपूर्ण सरणी ( [0] )।

और यह नया सरणी मूल सरणी में लिपटा हुआ है, क्योंकि आपने मूल तत्व (संख्या 0 ) को नए तत्व (3 तत्वों की सरणी) में मैप किया है

नोट: आप का उपयोग केवल पहले पैरामीटर जैसे में करने के लिए किया जा सकता है

array.map(function (a) { return a * a; });

या केवल दो का उपयोग करके भी सूचकांक प्राप्त करें

array.map(function (item, index) { return "index=" + index + ", value=" + item; });

लेकिन आपको यह याद रखना होगा कि map अभी भी 3 पैरामीटर प्रदान करता है जिसे आप अपने कॉलबैक फ़ंक्शन में अनदेखा करते हैं। यही कारण है कि जैसे कोड:

[0].map(String);

रिटर्न

["0"]

यह इसलिए है क्योंकि String(thing) फ़ंक्शन केवल पहले पैरामीटर के बारे में परवाह करता है और अन्य पारित मापदंडों की उपेक्षा करता है। अगर तुम बुलाओ

String(11, "Some", "other", "ignored", "parameters")

आपको अभी भी मिलेगा

"11"

सबसे पहले , Array को सरणियाँ बनाने के लिए एक फ़ंक्शन के रूप में इस्तेमाल किया जा सकता है:

var arr = Array(1, 2, "Hello");

console.log(arr); // [1, 2, "Hello"]

दूसरे , map अपने कॉलबैक में तीन मापदंडों से गुजरता है: तत्व, इसका सूचकांक और सरणी से ही।

इसलिए , चूंकि आपके सरणी में एक तत्व है, पंक्ति:

[0].map(Array);

के बराबर है:

[Array(0, 0, [0])];     // the element 0 in the original array will be mapped into Array(0, 0, [0])





javascript