हमारे पास तत्वों का एक एरे है जिसमें ट्रुथी और फाल्सी दोनों मान हैं। हमारा काम एक फ़ंक्शन लिखना है जो मूल एरे में उन तत्वों के इंडेक्स के साथ एक एरे लौटाता है जो NaN हैं।
NaN !== NaN
NaN का डेटा प्रकार वास्तव में नंबर है। हालांकि NaN एक फाल्सी मान है, इसकी एक खासियत है जो किसी अन्य डेटा प्रकार या वेरिएबल में नहीं है। वह यह है कि एक्सप्रेशन NaN === NaN false देता है। और यह केवल NaN के मामले में है कि यह false है।
तो, हम इस व्यवहार का अपने लाभ के लिए उपयोग कर सकते हैं और NaN मान का इंडेक्स चुन सकते हैं। इसके लिए कोड होगा -
const arr = [7, 1, "123abc", undefined, NaN, 78, NaN, null, "aes", NaN, '', null, NaN]; const pickNaN = (arr) => { return arr.reduce((acc, val, ind) => { if(val !== val){ acc.push(ind); }; return acc; }, []); }; console.log(pickNaN(arr));isNaN() / Number.isNaN() का उपयोग करना
isNaN() फ़ंक्शन इस तथ्य के आधार पर true या false लौटाता है कि प्रदान किया गया मान NaN है या NaN में जबरदस्ती किया जा सकता है। जबकि Number.isNaN() फ़ंक्शन केवल तभी true लौटाता है जब प्रदान किया गया मान वास्तव में NaN हो।
तो, Number.isNaN(), isNaN() की तुलना में NaN की जांच करने का अधिक विश्वसनीय तरीका है। कोड आउटपुट में अंतर नीचे दिखाया गया है।
उदाहरण
const arr = [7, 1, "abc", undefined, NaN, 78, NaN, null, "aes", NaN, '', null, NaN]; const pickNaN = (arr) => { return arr.reduce((acc, val, ind) => { if(Number.isNaN(val)){ acc.reliableWay.push(ind); }; if(isNaN(val)){ acc.unreliableWay.push(ind); } return acc; }, { reliableWay: [], unreliableWay: [] }); }; console.log(pickNaN(arr));यह कोड दो एरे तैयार करता है, एक Number.isNaN() का उपयोग करके और एक isNaN() का उपयोग करके।
आउटपुट
आउटपुट होगा -
{ reliableWay: [ 4, 6, 9, 12 ], unreliableWay: [ 2, 3, 4, 6, 8, 9, 12] }हम स्पष्ट रूप से देख सकते हैं कि isNaN() ने कई गैर-NaN मानों को NaN के रूप में गणना किया। इसलिए Number.isNaN() अधिक विश्वसनीय तरीका है।