हमारे पास एक एरे है जिसमें स्ट्रिंग और नंबर मिश्रित डेटा प्रकार हैं, हमें एक सॉर्टिंग फ़ंक्शन लिखना है जो एरे को इस तरह सॉर्ट करता है कि NaN मान हमेशा नीचे रहें। एरे में पहले सभी सामान्य नंबर होने चाहिए, फिर स्ट्रिंग लिटरल और फिर NaN नंबर।
हम जानते हैं कि NaN का डेटा प्रकार "number" है, इसलिए हम NaN को !number && !string की तरह चेक नहीं कर सकते। इसके अलावा, यदि हम केवल तत्वों की टॉटोलॉजी और फाल्सीनेस चेक करते हैं तो खाली स्ट्रिंग भी उसी कंडीशन को संतुष्ट करेगी जो NaN या undefined संतुष्ट करता है।
NaN की जांच
तो हम NaN की जांच कैसे करते हैं। NaN नंबर की एक विशेष संपत्ति है, और वह यह है कि NaN, NaN के बराबर नहीं है, यानी JS में किसी भी अन्य मान के लिए, चाहे वह कुछ भी हो, value === value true देगा, लेकिन NaN === NaN हमेशा false देता है। हम इस तथ्य का उपयोग अपने एरे को सॉर्ट करने के लिए करेंगे।
उदाहरण
const arr = [344, 'fd', NaN, '', 5, 'f',76, NaN, 76, NaN, 87, 89, 'fdf', 23, 'fgg', NaN, 765]; const sorter = (a, b) => { if(a !== a){ return 1; }else if(b !== b){ return -1; } return typeof a === 'number' ? -1 : 1; }; arr.sort(sorter); console.log(arr);आउटपुट
कंसोल में आउटपुट होगा -
[ 765, 23, 89, 87, 76, 76, 5, 344, 'fd', '', 'f', 'fdf', 'fgg', NaN, NaN, NaN, NaN ]