मान लीजिए हमारे पास निम्न कोड और आउटपुट है और हमें यह पता लगाना है कि JavaScript खाली स्ट्रिंग (" ") को 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 का परिणाम true होता है और इस प्रकार प्रत्येक स्पेस 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 ]