हमारे पास एक सरणी है जिसमें कुछ संख्याएं और कुछ तार होते हैं। हमें सरणी को इस तरह से सॉर्ट करने की आवश्यकता है कि संख्याएं क्रमबद्ध हो जाएं और प्रत्येक स्ट्रिंग से पहले रखी जाएं और फिर स्ट्रिंग को वर्णानुक्रम में क्रमबद्ध किया जाना चाहिए।
उदाहरण के लिए -
सॉर्ट किए जाने के बाद यह सरणी
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 नंबर है → इस मामले में हम b को a से पहले रखते हैं
-
a और b दोनों स्ट्रिंग हैं → हम उस स्ट्रिंग की जांच करते हैं जो वर्णानुक्रम से छोटी है यानी, पहले आती है और इसे पहले रखती है।