जावास्क्रिप्ट छँटाई सरणियाँ
एक सरणी छँटाई
sort()
विधि वर्णानुक्रम में एक सरणी टाइप करती है :
उदाहरण
const fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
एक ऐरे को उलटना
विधि एक सरणी में तत्वों को reverse()
उलट देती है।
आप किसी सरणी को अवरोही क्रम में सॉर्ट करने के लिए इसका उपयोग कर सकते हैं:
उदाहरण
const fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
fruits.reverse();
संख्यात्मक क्रमबद्ध
डिफ़ॉल्ट रूप से, sort()
फ़ंक्शन मानों को स्ट्रिंग्स के रूप में सॉर्ट करता है ।
यह स्ट्रिंग्स के लिए अच्छा काम करता है ("Apple" "केले" से पहले आता है)।
हालाँकि, यदि संख्याओं को स्ट्रिंग के रूप में क्रमबद्ध किया जाता है, तो "25" "100" से बड़ा है, क्योंकि "2" "1" से बड़ा है।
इस वजह से, sort()
संख्याओं को छांटते समय विधि गलत परिणाम देगी।
आप तुलना फ़ंक्शन प्रदान करके इसे ठीक कर सकते हैं :
उदाहरण
const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});
अवरोही सरणी को सॉर्ट करने के लिए उसी ट्रिक का उपयोग करें:
उदाहरण
const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});
तुलना समारोह
तुलना फ़ंक्शन का उद्देश्य वैकल्पिक सॉर्ट ऑर्डर को परिभाषित करना है।
तुलना फ़ंक्शन को तर्कों के आधार पर एक ऋणात्मक, शून्य या धनात्मक मान लौटाना चाहिए:
function(a, b){return a - b}
जब sort()
फ़ंक्शन दो मानों की तुलना करता है, तो यह तुलना फ़ंक्शन को मान भेजता है, और मानों को लौटाए गए (ऋणात्मक, शून्य, सकारात्मक) मान के अनुसार क्रमबद्ध करता है।
यदि परिणाम नकारात्मक a
है तो पहले क्रमबद्ध किया जाता है
b
।
यदि परिणाम सकारात्मक b
है तो पहले क्रमबद्ध किया जाता है a
।
यदि परिणाम 0 है, तो दो मानों के क्रम क्रम में कोई परिवर्तन नहीं किया जाता है।
उदाहरण:
तुलना फ़ंक्शन सरणी में सभी मानों की तुलना करता है, एक समय में दो मान (a, b)
।
40 और 100 की तुलना करते समय, sort()
विधि तुलना फ़ंक्शन (40, 100) को कॉल करती है।
फ़ंक्शन 40 - 100 की गणना करता है (a - b)
, और चूंकि परिणाम नकारात्मक (-60) है, सॉर्ट फ़ंक्शन 40 को 100 से कम मान के रूप में सॉर्ट करेगा।
संख्यात्मक और वर्णानुक्रम में छँटाई के साथ प्रयोग करने के लिए आप इस कोड स्निपेट का उपयोग कर सकते हैं:
<button onclick="myFunction1()">Sort Alphabetically</button>
<button
onclick="myFunction2()">Sort Numerically</button>
<p id="demo"></p>
<script>
const points = [40, 100, 1, 5, 25, 10];
document.getElementById("demo").innerHTML = points;
function
myFunction1() {
points.sort();
document.getElementById("demo").innerHTML
= points;
}
function myFunction2() {
points.sort(function(a, b){return
a - b});
document.getElementById("demo").innerHTML = points;
}
</script>
यादृच्छिक क्रम में एक सरणी छँटाई
उदाहरण
const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return 0.5 - Math.random()});
फिशर येट्स विधि
उपरोक्त उदाहरण, सरणी .sort (), सटीक नहीं है, यह कुछ संख्याओं को दूसरों पर पसंद करेगा।
सबसे लोकप्रिय सही विधि, फिशर येट्स फेरबदल कहा जाता है, और डेटा विज्ञान में 1938 की शुरुआत में पेश किया गया था!
जावास्क्रिप्ट में इस विधि का अनुवाद किया जा सकता है:
उदाहरण
const points = [40, 100, 1, 5, 25, 10];
for (let i = points.length -1; i > 0;
i--) {
let j = Math.floor(Math.random() * i)
let k = points[i]
points[i] = points[j]
points[j] = k
}
उच्चतम (या निम्नतम) सरणी मान ज्ञात करें
किसी सरणी में अधिकतम या न्यूनतम मान खोजने के लिए कोई अंतर्निहित कार्य नहीं हैं।
हालांकि, एक सरणी को सॉर्ट करने के बाद, आप उच्चतम और निम्नतम मान प्राप्त करने के लिए अनुक्रमणिका का उपयोग कर सकते हैं।
बढ़ते क्रम में:
उदाहरण
const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});
// now points[0] contains the lowest value
// and points[points.length-1] contains the highest value
घटते क्रम में:
उदाहरण
const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});
// now points[0] contains the highest value
// and points[points.length-1] contains the lowest value
यदि आप केवल उच्चतम (या निम्नतम) मान खोजना चाहते हैं, तो संपूर्ण सरणी को सॉर्ट करना एक बहुत ही अक्षम तरीका है।
एक ऐरे पर Math.max() का उपयोग करना
Math.max.apply
आप किसी सरणी में उच्चतम संख्या खोजने के लिए उपयोग कर सकते हैं :
उदाहरण
function myArrayMax(arr) {
return Math.max.apply(null, arr);
}
Math.max.apply(null, [1, 2, 3])
के बराबर है Math.max(1, 2, 3)
।
एक ऐरे पर Math.min() का उपयोग करना
Math.min.apply
आप किसी सरणी में सबसे कम संख्या खोजने के लिए उपयोग कर सकते हैं :
उदाहरण
function myArrayMin(arr) {
return Math.min.apply(null, arr);
}
Math.min.apply(null, [1, 2, 3])
के बराबर है Math.min(1, 2, 3)
।
मेरा न्यूनतम/अधिकतम जावास्क्रिप्ट तरीके
सबसे तेज़ समाधान "होम मेड" पद्धति का उपयोग करना है।
यह फ़ंक्शन प्रत्येक मान की तुलना उच्चतम मान के साथ एक सरणी के माध्यम से करता है:
उदाहरण (अधिकतम खोजें)
function myArrayMax(arr) {
let len = arr.length;
let max = -Infinity;
while (len--) {
if (arr[len] > max) {
max = arr[len];
}
}
return max;
}
यह फ़ंक्शन एक सरणी के माध्यम से लूप करता है जिसमें प्रत्येक मान की तुलना निम्नतम मान से की जाती है:
उदाहरण (न्यूनतम खोजें)
function myArrayMin(arr) {
let len = arr.length;
let min = Infinity;
while (len--) {
if (arr[len] < min) {
min = arr[len];
}
}
return min;
}
वस्तु सरणियों को छाँटना
जावास्क्रिप्ट सरणियों में अक्सर ऑब्जेक्ट होते हैं:
उदाहरण
const cars = [
{type:"Volvo", year:2016},
{type:"Saab", year:2001},
{type:"BMW", year:2010}
];
भले ही ऑब्जेक्ट्स में विभिन्न डेटा प्रकारों के गुण हों, फिर भी sort()
विधि का उपयोग सरणी को सॉर्ट करने के लिए किया जा सकता है।
संपत्ति मूल्यों की तुलना करने के लिए एक तुलना फ़ंक्शन लिखना समाधान है:
उदाहरण
cars.sort(function(a, b){return a.year - b.year});
स्ट्रिंग गुणों की तुलना करना थोड़ा अधिक जटिल है:
उदाहरण
cars.sort(function(a, b){
let x = a.type.toLowerCase();
let y = b.type.toLowerCase();
if (x < y) {return -1;}
if (x > y) {return 1;}
return 0;
});
पूरा ऐरे संदर्भ
संपूर्ण ऐरे संदर्भ के लिए, हमारे यहां जाएं:
जावास्क्रिप्ट ऐरे संदर्भ को पूरा करें ।
संदर्भ में सभी ऐरे गुणों और विधियों के विवरण और उदाहरण हैं।