मान लें कि हमें निम्नलिखित कोड और आउटपुट दिया गया है और हमें यह पता लगाने की आवश्यकता है कि जावास्क्रिप्ट खाली स्ट्रिंग्स (" ") को 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 भी हो
यह वास्तव में होता है क्योंकि मानचित्र () फ़ंक्शन के अंदर जब हम संख्या का उपयोग करके प्रत्येक वर्ण को उसके संख्यात्मक समकक्ष में परिवर्तित कर रहे होते हैं, तो यह वास्तव में सख्त समानता तुलना (===) के बजाय सार समानता तुलना (==) का उपयोग करता है जिसके अनुसार' ' ==0 सत्य उत्पन्न करता है और इस प्रकार प्रत्येक स्थान 0 में परिवर्तित हो जाता है।
इस बेतुके व्यवहार को रोकने के लिए हम अपने मैप () फंक्शन में कुछ इस तरह से बदलाव कर सकते हैं -
उदाहरण
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 ]