जावास्क्रिप्ट सरणी सॉर्ट ()

JavaScript सरणी सॉर्ट () विधि किसी सरणी के आइटम को सॉर्ट करती है।

sort()विधि एक विशिष्ट बढ़ते या घटते क्रम में एक दिया सरणी के तत्वों क्रमबद्ध करता है।

sort()विधि का सिंटैक्स है:

 arr.sort(compareFunction)

यहाँ, अरै एक अरै है।

सॉर्ट () पैरामीटर

sort()विधि में लेता है:

  • तुलना (वैकल्पिक) - इसका उपयोग कस्टम क्रम क्रम को परिभाषित करने के लिए किया जाता है।

सॉर्ट से वापसी मान ()

  • सरणी के तत्वों को जगह में छाँटने के बाद सरणी लौटाता है (इसका अर्थ है कि यह मूल सरणी को बदलता है और कोई प्रतिलिपि नहीं बनाई जाती है)।

उदाहरण 1: एरियर के तत्वों को क्रमबद्ध करना

जब तुलनाफल पारित नहीं होता है,

  • सभी गैर- undefinedसरणी तत्व पहले स्ट्रिंग्स में परिवर्तित हो जाते हैं।
  • इन स्ट्रिंग्स की तब उनके UTF-16 कोड पॉइंट वैल्यू का उपयोग करके तुलना की जाती है।
  • छँटाई आरोही क्रम में की जाती है।
  • सभी undefinedतत्व सरणी के अंत में सॉर्ट किए जाते हैं।
 // sorting an array of strings var names = ("Adam", "Jeffrey", "Fabiano", "Danil", "Ben"); // returns the sorted array console.log(names.sort()); // modifies the array in place console.log(names); var priceList = (1000, 50, 2, 7, 14); priceList.sort(); // Number is converted to string and sorted console.log(priceList)

आउटपुट

 ((एडम ’, 'बेन’, il डेनिल ’,' फैबियानो’, 'जेफरी ’) (' एडम’, Dan बेन ’, Ben डेनिल’, iano फैबियानो ’, rey जेफरी’) (1000, 14, 2, 50 , 7)

यहां, हम देख सकते हैं कि नाम सरणी स्ट्रिंग के आरोही क्रम में क्रमबद्ध है। उदाहरण के लिए, एडम दानिल से पहले आता है क्योंकि "ए" "डी" से पहले आता है।

चूंकि सभी गैर-अपरिभाषित तत्वों को छँटाई करने से पहले तार में बदल दिया जाता है, इसलिए Numberउस क्रम में डेटा प्रकारों को क्रमबद्ध किया जाता है।

यहां, हम देख सकते हैं कि भले ही 1000 संख्यात्मक रूप से 50 से अधिक है , यह क्रमबद्ध सूची की शुरुआत में आता है। ऐसा इसलिए है क्योंकि "1" <"5"

उदाहरण 2: कस्टम फ़ंक्शन का उपयोग करके सॉर्ट करना

जब ComparFunction पारित हो जाता है,

  • सभी गैर- undefinedसरणी तत्वों को तुलना के रिटर्न मूल्य के अनुसार क्रमबद्ध किया जाता है।
  • सभी अपरिभाषित तत्वों को सरणी के अंत में सॉर्ट किया जाता है और तुलना के लिए उन्हें नहीं बुलाया जाता है।

मान लें कि हम उपरोक्त नामों की सरणी को क्रमबद्ध करना चाहते हैं, जैसे कि सबसे लंबा नाम अंतिम रूप से आता है, बल्कि इसे वर्णानुक्रम में क्रमबद्ध करने के बजाय। हम इसे निम्नलिखित तरीके से कर सकते हैं:

 // custom sorting an array of strings var names = ("Adam", "Jeffrey", "Fabiano", "Danil", "Ben"); function len_compare(a, b)( return a.length - b.length; ) // sort according to string length names.sort(len_compare); console.log(names);

आउटपुट

 ('बेन', 'एडम', 'डेनिल', 'जेफरी', 'फैबियानो')

यहाँ, छँटाई तर्क पर आधारित है a.length - b.length। इसका मूल रूप से मतलब है कि छोटी लंबाई वाली वस्तु शुरुआत में दिखाई देगी Array

आइए पहले समझते हैं कि वैकल्पिक कैसे compareFunctionकाम करता है।

किसी के compareFunctionपास सिंटैक्स है:

 function (a, b)( // sorting logic // return a Number )

sort()विधि के लिए एक समय में दो मान पास से सरणी के सभी मानों तुलना compareFunction। दो पैरामीटर a और b क्रमशः इन दो मूल्यों का प्रतिनिधित्व करते हैं।

compareFunctionएक लौटना चाहिए Number। इस लौटे मान का उपयोग तत्वों को निम्न प्रकार से सॉर्ट करने के लिए किया जाता है:

  • यदि लौटाया गया मान <0 , a को b से पहले क्रमबद्ध किया जाता है (b से पहले आता है)।
  • यदि लौटाया गया मान> 0 , b को पहले a (b से पहले आता है) के आधार पर सॉर्ट किया जाता है।
  • यदि मान == 0 लौटाया जाता है , तो ए और बी एक दूसरे के सापेक्ष अपरिवर्तित रहते हैं।

उदाहरण 2 में, हम सरणी का उपयोग कर छांटते हैं:

 function len_compare(a, b)( return a.length - b.length; )

यहाँ:

  • यदि a.length - b.length <0 , b से पहले आता है। उदाहरण के लिए, "एडम" 4 - 7 <0 के रूप में "जेफरी" से पहले आता है ।
  • यदि a.length - b.length> 0 , b एक से पहले आता है। उदाहरण के लिए, "डैनिल" "बेन" के बाद 5 - 3> 0 के रूप में आता है
  • यदि a.length - b.length == 0 , उनकी स्थिति अपरिवर्तित है। उदाहरण के लिए, "जेफरी" और "फैबियानो" की सापेक्ष स्थिति अपरिवर्तित है क्योंकि 7 - 7 == 0 है

हम देख सकते हैं कि आरोही क्रम में उनकी लंबाई के अनुसार तार की छंटाई में यह परिणाम है।

उदाहरण 3: संख्याओं को क्रमबद्ध रूप से क्रमबद्ध करना

चूंकि सभी गैर-अपरिभाषित तत्वों को छँटाई करने से पहले तार में बदल दिया जाता है, इसलिए हम डिफ़ॉल्ट रूप से उनके संख्यात्मक मान का उपयोग करके संख्याओं को क्रमबद्ध नहीं कर सकते हैं।

आइए देखें कि हम कस्टम फ़ंक्शन का उपयोग करके इसे कैसे लागू कर सकते हैं।

 // numeric sorting // define array var priceList = (1000, 50, 2, 7, 14); // sort() using function expression // ascending order priceList.sort(function (a, b) ( return a - b; )); // Output: Ascending - 2,7,14,50,1000 console.log("Ascending - " + priceList); // sort() using arrow function expression // descending order priceList.sort((a, b) => b - a); // Output: Descending - 1000,50,14,7,2 console.log("Descending - " + priceList);

आउटपुट

 आरोही - 2,7,14,50,1000 अवरोही - 1000,50,14,7,2

इस उदाहरण में, हमने सरणी का उपयोग करके हल किया:

 function (a, b) ( return a - b; )

यहाँ,

  • यदि a - b <0 , b से पहले आता है। उदाहरण के लिए, 2 7 से पहले 2 - 7 <0 के रूप में आता है ।
  • यदि a - b> 0 , b एक से पहले आता है। उदाहरण के लिए, 1000 50 के बाद 1000 - 50> 0 के रूप में आता है

हम देख सकते हैं कि यह संख्या के क्रम में उनके आरोही संख्यात्मक मान के अनुसार छंटनी है।

इसी तरह, हम b - aउन्हें अवरोही क्रम में क्रमबद्ध करने के लिए उपयोग कर सकते हैं । ध्यान दें कि हम ES2015 में परिभाषित एरो फंक्शन एक्सप्रेशन का भी उपयोग कर सकते हैं।

हम अंतर्निहित क्रम reverse()विधि का उपयोग करके क्रमबद्ध सरणी को उल्टा (अवरोही क्रम) भी कर सकते हैं । अधिक जानने के लिए, जावास्क्रिप्ट ऐरे रिवर्स () पर जाएँ।

दिलचस्प लेख...