Try it</button> <script> function myFunction() { var points ="> Try it</button> <script> function myFunction() { var points ="> Try it</button> <script> function myFunction() { var points =" />

संख्याओं की एक सरणी छंटनी

यह कोड क्यों काम करता है?

<!DOCTYPE HTML>
<html>
<body>

Click the button to sort the array.

<button onclick="myFunction()">Try it</button> <script> function myFunction() { var points = [40,100,1,5,25,10]; points.sort(function(a,b){return a-b}); var x = document.getElementById("demo"); x.innerHTML=points; } </script> </body> </html>

It is taken from W3Schools

मैं points.sort (फ़ंक्शन (ए, बी) {वापसी ए-बी} नहीं समझ रहा हूं); भाग।

0
W3Schools नहीं समझाया कि Array.sort कैसे काम करता है?
जोड़ा लेखक Yuriy Galanter, स्रोत
इसके अलावा मैं W3School के स्पष्टीकरण को looooooove यह समझना मुश्किल हो सकता है कि यह फ़ंक्शन कैसे काम करता है, लेकिन इस पृष्ठ के निचले भाग में उदाहरण देखें।
जोड़ा लेखक Yuriy Galanter, स्रोत
मुझे points.sort (फ़ंक्शन (ए, बी) {रिटर्न ए-बी} नहीं समझा जाता है); भाग।
जोड़ा लेखक inéquation, स्रोत
क्रम में कि फ़ंक्शन (फ़ंक्शन (ए, बी) {रिटर्न ए-बी}) कहा जाता है, इसे() सही से समाप्त करना चाहिए? इसके अलावा, मुझे समझ में नहीं आता कि {वापसी ए-बी} क्या है? क्या यह एक बूलियन में स्वतः परिवर्तित हो गया है?
जोड़ा लेखक inéquation, स्रोत
@metacompactness no, वापसी ए-बी b को a से घटाकर परिणाम देता है। तो उदाहरण के लिए, सरणी में पहले 2 नंबर, a = 40 और b = 100 तो return ab वापस आ जाएगा -60
जोड़ा लेखक Crayon Violent, स्रोत
यह आपके द्वारा सॉर्ट किए गए फ़ंक्शन के आधार पर संख्याओं को सॉर्ट करने के लिए अंतर्निहित फ़ंक्शन सॉर्ट() का उपयोग करता है, इस मामले में function (a, b) {return a-b}
जोड़ा लेखक DrCord, स्रोत
अगर आप समझना चाहते हैं कि सॉर्ट फ़ंक्शन कैसे काम कर रहा है, तो इस बबल सॉर्ट या सॉर्टिंग एल्गोरिदम
जोड़ा लेखक Givi, स्रोत
स्टार्टर्स के लिए w3fools.com यह एक डुप्लिकेट प्रश्न है stackoverflow.com/questions/1494713/…
जोड़ा लेखक Ace, स्रोत

5 उत्तर

सॉर्ट फ़ंक्शन एक तर्ककर्ता फ़ंक्शन को इसके तर्क के रूप में लेता है। तुलनित्र कार्य इस तरह काम करता है:

  • It compares two values (a and b)
  • If a > b, it returns something positive
  • If a = b, it returns 0
  • If a < b, it returns something negative

a-b fulfills this contract.

For example: if a = 40 and b = 100, then a-b = -60. So a < b.

0
जोड़ा

आपके पास क्या है तुलना निष्पादन तर्क वाक्यविन्यास Array.prototype.sort का उपयोग करें जिसे आप कस्टमसॉर्टिंग के लिए उपयोग कर सकते हैं। यह आपके द्वारा इस फ़ंक्शन से वापस आने वाले मान के आधार पर सॉर्टिंग करता है और नियम हैं निम्नानुसार हैं:

  • यदि तुलना करें कार्यक्षमता (ए, बी) 0 से कम है, बी से कम इंडेक्स को क्रमबद्ध करें, यानी पहले आता है।
  • अगर तुलना करें (ए, बी) 0 देता है, तो एक दूसरे को एक दूसरे के संबंध में अपरिवर्तित छोड़ दें, लेकिन सभी अलग-अलग तत्वों के संबंध में हल किया जाए। नोट: ईसीएमएस्क्रिप्ट मानक इस व्यवहार की गारंटी नहीं देता है, और इस प्रकार सभी ब्राउज़रों (उदा। कम से कम 2003 तक मोज़िला संस्करण) इस बात का सम्मान नहीं करते हैं।
  • यदि तुलना करें कार्यक्षमता (ए, बी) 0 से अधिक है, तो बी को कम इंडेक्स से क्रमबद्ध करें।

So you are just returning the difference between 2 numbers a & b which will return exactly what is needed by the sort compareFunction, (i.e -ve --> if a < b, +ve --> if a > b or 0 --> if a == b).

0
जोड़ा

जब आप sort विधि के साथ कॉलबैक फ़ंक्शन का उपयोग करते हैं, तो यह निर्धारित करता है कि सरणी में दो आइटमों की तुलना कैसे करें।

यदि मान बराबर हैं, तो कॉलबैक फ़ंक्शन 0 लौटाया जाना चाहिए। यदि पहला पैरामीटर दूसरे से पहले समाप्त होना चाहिए, तो कॉलबैक को ऋणात्मक मान वापस करना चाहिए, अन्यथा सकारात्मक मान।

एक ही परिणाम के साथ यहां एक और वर्णनात्मक कार्यान्वयन है:

points.sort(function(a,b){
  if (a == b) {
    return 0;
  } else if (a < b) {
    return -1;
  } else {
    return 1;
  }
});
0
जोड़ा

.sort() allows you to pass a function to define how the array is sorted. The goal is to return a positive (>=0) or negative number (<0) in relation to the two currently compared items. The idea is if you take a and subtract from b, if a is greater than b then a positive is returned and therefore a will be ranked higher than b. If a is less than b a negative is returned and b is ranked higher than a.

0
जोड़ा

सॉर्ट फ़ंक्शन यह देखकर काम करता है कि तुलनित्र फ़ंक्शन द्वारा दिया गया मान ऋणात्मक या सकारात्मक है या नहीं। असल में, यदि यह सकारात्मक है, तो यह संख्याओं को बदल देता है। यदि यह नकारात्मक या शून्य है, तो यह उन्हें उस क्रम में छोड़ देता है। यह तब तक सरणी को घुमाता रहता है जब तक कि सभी जोड़े एक गैर-सकारात्मक मूल्य वापस न करें।

इस मामले में:

  1. 40-100 = -60 तो उन दोनों को अकेला छोड़ दो। ऐरे [40, 100, 1, 5, 25, 10]
  2. है
  3. 100-1 = 99 तो स्वैप करें। ऐरे [40, 1, 100, 5, 25, 10]
  4. है
  5. 100-5 = 95 तो स्वैप करें। [40, 1, 5, 100, 25, 10]
  6. 100-25 = 75 तो स्वैप करें। [40, 1, 5, 25, 100, 10]
  7. 100-10 = 90 तो स्वैप करें। [40, 1, 5, 25, 10, 100]
  8. शुरू करें। 40-1 = 3 9, तो स्वैप करें। [1, 40, 5, 25, 10, 100]

और इसी तरह ... यह काफी अक्षम है, इसलिए यह संभावना है कि हुड के नीचे, कुछ और अधिक कुशल चल रहा है, लेकिन आपके आउटपुट की भविष्यवाणी के प्रयोजनों के लिए, यह पर्याप्त है।

आप इस प्रकार अपना सॉर्ट फ़ंक्शन लिख सकते हैं और एक ही परिणाम प्राप्त कर सकते हैं:

function(a, b) {
    if (a > b) return 1;
    else if (a < b) return -1;
    else return 0;
}
0
जोड़ा