ধরা যাক আমাদের নিম্নলিখিত কোড এবং আউটপুট দেওয়া হয়েছে এবং কেন জাভাস্ক্রিপ্ট খালি স্ট্রিংগুলিকে (“ “) 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 ]