মান लीজिए हमें निम्नलिखित कोड और आउटपुट दिया गया है और हमें यह पता लगाना है कि जावास्क्रिप्ट खाली स्ट्रिंग्स (" ") को 0 में क्यों बदल देता है।
const digify = (str) => { const parsedStr = [...str].map(Number) return parsedStr; } console.log(digify("778 858 7577"))
आउटपुट
[ 7, 7, 8, 0, 8, 5, 8, 0, 7, 5, 7, 7 ]
यह व्यवहार बहुत परेशान करने वाला हो सकता है, खासकर जब स्ट्रिंग में पहले से ही कुछ 0 मौजूद हों।
यह वास्तव में इसलिए होता है क्योंकि map() फ़ंक्शन के अंदर जब हम Number का उपयोग करके प्रत्येक वर्ण को उसके संख्यात्मक समकक्ष में परिवर्तित कर रहे होते हैं, तो यह वास्तव में सख्त समानता तुलना (===) के बजाय सार्वभौमिक समानता तुलना (==) का उपयोग करता है, जिसके अनुसार ' ' == 0 सत्य देता है और इस प्रकार प्रत्येक स्पेस 0 में परिवर्तित हो जाता है।
इस बेतुके व्यवहार को रोकने के लिए हम अपने map() फ़ंक्शन में कुछ संशोधन कर सकते हैं जैसे कि -
उदाहरण
const sin = (str) => { const parsedStr = [...str].map(i => parseInt(i, 10)) return parsedStr; } console.log(sin("778 858 7577"))
इस प्रकार, जब भी एक स्पेस आता है, तो यह NaN में परिवर्तित हो जाएगा जो अधिक तार्किक व्यवहार है।
आउटपुट
[ 7, 7, 8, NaN, 8, 5, 8, NaN, 7, 5, 7, 7 ]