हमारे पास एक ऐरे है जिसमें कुछ संख्याएं और कुछ स्ट्रिंग्स हैं। हमें ऐरे को इस तरह सॉर्ट करना आवश्यक है कि संख्याएं सॉर्ट हो जाएं और हर स्ट्रिंग से पहले रखी जाएं और फिर स्ट्रिंग्स को वर्णानुक्रम में सॉर्ट करके रखा जाए।
उदाहरण के लिए -
सॉर्ट होने के बाद यह ऐरे
const arr = [1, 'fdf', 'afv', 6, 47, 7, 'svd', 'bdf', 9];
इस तरह दिखना चाहिए -
[1, 6, 7, 9, 47, 'afv', 'bdf', 'fdf', 'svd']
तो, आइए इसके लिए कोड लिखें -
उदाहरण
const arr = [1, 'fdf', 'afv', 6, 47, 7, 'svd', 'bdf', 9]; const sorter = (a, b) => { if(typeof a === 'number' && typeof b === 'number'){ return a - b; }else if(typeof a === 'number' && typeof b !== 'number'){ return -1; }else if(typeof a !== 'number' && typeof b === 'number'){ return 1; }else{ return a > b ? 1 : -1; } } arr.sort(sorter); console.log(arr);
आउटपुट
कंसोल में आउटपुट होगा -
[ 1, 6, 7, 9, 47, 'afv', 'bdf', 'fdf', 'svd' ]
कोड को समझना -
इस कोड का मुख्य भाग सॉर्टर फ़ंक्शन है, हम जानते हैं कि कॉलबैक फ़ंक्शन दो आर्गुमेंट्स प्राप्त करता है, दोनों ऐरे के तत्व होते हैं।
अब हमारे पास चार संभावनाएं हैं -
a और b दोनों नंबर हैं → इस मामले में हम छोटी संख्या को बड़ी संख्या से पहले रखते हैं
a नंबर है लेकिन b स्ट्रिंग है → इस मामले में हम नंबर (a) को स्ट्रिंग (b) से पहले रखते हैं जैसा कि प्रश्न में पूछा गया है।
a स्ट्रिंग है लेकिन b नंबर है → इस मामले में हम b को a से पहले रखते हैं
a और b दोनों स्ट्रिंग हैं → हम उस स्ट्रिंग की जांच करते हैं जो वर्णानुक्रम में छोटी है यानी पहले आती है और उसे पहले रखते हैं।