JavaScript में Array क्लास के पास ऐरे बदलने के लिए बहुत सारे शक्तिशाली और पहले से मौजूद मेथड हैं।
ये मेथड एक ऐरे को दूसरे ऐरे में बदलना बहुत आसान बना देते हैं। साधारण for लूप या सीधे-सीधे बदलाव करके यही काम करना उसके मुकाबले कहीं ज़्यादा मुश्किल होता है।
कुछ मेथड प्योर होते हैं, यानी वे मूल ऐरे को नहीं बदलते। इसके बजाय वे एक नया ऐरे लौटाते हैं। लेकिन कुछ मेथड ऐसे भी हैं जो उस ऐरे को बदल देते हैं जिस पर उन्हें कॉल किया जाता है, और बदला हुआ ऐरे नहीं लौटाते।
ऐरे बदलने के लिए सबसे ज़्यादा इस्तेमाल होने वाले कुछ मेथड नीचे दिए गए हैं। उपलब्ध सभी मेथड की पूरी सूची MDN दस्तावेज़ में मिल सकती है।
यह हर एलिमेंट को बदलकर एक नया ऐरे बनाता है, और इसके लिए आर्गुमेंट के रूप में दिया गया फंक्शन इस्तेमाल करता है। ये कॉलबैक फंक्शन अक्सर एरो फंक्शन के रूप में लिखे जाते हैं।
let arr = [1, 2, 3, 4];
const newArr = arr.map((value) => value - 1);
console.log(newArr);
// => [0, 1, 2, 3]
console.log(arr);
// => [1, 2, 3, 4]
ध्यान देने की बात है कि बने हुए ऐरे की लंबाई हमेशा मूल ऐरे के बराबर ही होती है।
मौजूदा ऐरे को एक फ़िल्टरिंग फंक्शन की मदद से छानकर एक नया ऐरे बनाता है (यह फंक्शन सही लौटाता है अगर एलिमेंट रखा जाना चाहिए, और गलत अगर उसे हटाया जाना चाहिए)।
let arr = [1, 2, 3, 4];
arr.filter((value) => value % 2 === 0);
// => [2, 4]
एक फंक्शन की मदद से ऐरे को घटाकर एक ही वैल्यू बना देता है। यह फंक्शन एक एक्युमुलेटर और ऐरे के मौजूदा एलिमेंट को पैरामीटर के रूप में लेता है। फिर यह बताता है कि मौजूदा एलिमेंट को एक्युमुलेटर में कैसे जोड़ा जाए, और वह एक्युमुलेटर लौटाता है जो अगले इटरेशन में इस्तेमाल होगा।
let arr = [1, 2, 3, 4];
// Get the sum of elements
arr.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
// => 10
// Classify the numbers by whether they are odd or not
arr.reduce(
(accumulator, currentValue) => {
if (currentValue % 2 === 0) {
accumulator.even.push(currentValue);
} else {
accumulator.odd.push(currentValue);
}
return accumulator;
},
{ even: [], odd: [] },
);
// => { even: [2, 4], odd: [1, 3] }
ऐरे के एलिमेंट का क्रम उलट देता है।
const arr = [1, 2, 3, 4];
arr.reverse();
// => [4, 3, 2, 1]
यह मेथड उसी ऐरे को बदल देता है जिस पर इसे कॉल किया जाता है।
एक शुरुआती और एक अंतिम इंडेक्स दिए जाने पर, पैरामीटर के रूप में दिए गए ऐरे से एक उप-ऐरे बनाता है।
अंतिम इंडेक्स वाला एलिमेंट इसमें शामिल नहीं होता।
साथ ही, सारे पैरामीटर वैकल्पिक हैं:
शुरुआती इंडेक्स का डिफ़ॉल्ट 0 होता है, और अंतिम इंडेक्स का डिफ़ॉल्ट ऐरे की लंबाई होती है।
const arr = [1, 2, 3, 4];
arr.slice(1, 2); // [2]
arr.slice(1); // [2, 3, 4]
// You can also use negative numbers, that represent the indexes
// starting from the end of the array
arr.slice(-2); // [3, 4]
ऐरे के एलिमेंट हटाता है या बदल देता है, और/या नए एलिमेंट जोड़ता है।
यह निम्नलिखित पैरामीटर लेता है:
splice हटाए गए एलिमेंट लौटाता है।
const arr = ['1', '2', '5', '6'];
// Insert an element at index 2
arr.splice(2, 0, '3');
console.log(arr);
// => ['1', '2', '3', '5', '6']
// Remove 2 elements, starting at index 3 and insert 2 elements
const removed = arr.splice(3, 2, '4', '5');
console.log(removed);
// => ['5', '6']
console.log(arr);
// => ['1', '2', '3', '4', '5']
// Remove 1 element at index 1
arr.splice(1, 1);
console.log(arr);
// => ['1', '3', '4', '5']
डिफ़ॉल्ट रूप से, sort ऐरे के एलिमेंट को पहले स्ट्रिंग में बदलकर, फिर स्ट्रिंग तुलना लगाकर क्रम में लगाता है (देखिए तुलना)।
यह छँटाई जगह पर ही होती है, यानी मूल ऐरे बदल जाता है।
sort वह बदला हुआ ऐरे भी लौटाता है, जो तब काम आता है जब आप उस पर दूसरे मेथड की चेन लगाना चाहते हैं।
const arr = ['c', 'a', 'z', 'b'];
const result = arr.sort();
console.log(result);
// => ['a', 'b', 'c', 'z']
console.log(arr);
// => ['a', 'b', 'c', 'z']
छँटाई का व्यवहार अपने हिसाब से बदलने के लिए आप आर्गुमेंट के रूप में एक तुलना फंक्शन दे सकते हैं। इस तुलना फंक्शन को ऐरे के दो एलिमेंट के साथ, यानी दो आर्गुमेंट के साथ कॉल किया जाता है। फिर इसे निम्नलिखित लौटाना होता है:
0, अगर एलिमेंट का क्रम वैसा ही रहना चाहिएयहाँ एक उदाहरण दिया गया है कि ऑब्जेक्ट के ऐरे को क्रम में लगाने के लिए अपना तुलना फंक्शन कैसे इस्तेमाल किया जा सकता है।
const arr = [
{ name: 'Lydia', age: 7 },
{ name: 'Anne', age: 34 },
{ name: 'Holger', age: 59 },
];
arr.sort((item1, item2) => {
if (item1.name < item2.name) {
return -1;
}
if (item1.name > item2.name) {
return 1;
}
return 0;
});
// => [ { name: 'Anne', age: 34 }, { name: 'Holger', age: 59 },
// { name: 'Lydia', age: 7 } ]
एलिस, जो जादूगर बनने की राह पर है, अपनी ट्रेनिंग जारी रखती है। उसे कार्ड का एक डेक दिया जाएगा और वह उस डेक को बदलने की कोशिश करेगी। वह कुछ कार्डों को प्रकट करेगी, गायब करेगी, उनकी वैल्यू बदलेगी, या उन्हें पूरी तरह से नए क्रम में लगाएगी। चीज़ों को आसान बनाने के लिए, वह आमतौर पर 1 से 10 तक के कार्डों से ही शुरू करती है, हालाँकि कुछ करतबों से बड़े कार्ड भी बन सकते हैं।
एलिस डेक के हर कार्ड की संख्या दुगुनी करना चाहती है। इससे 1-10 से बड़े कार्ड बन सकते हैं।
const deck = [1, 2, 3, 4, 10];
seeingDouble(deck);
// => [2, 4, 6, 8, 20]
एलिस डेक में जो भी 3 मिलें, उन्हें तिगुना करना चाहती है। अगर डेक में शुरू में एक ही 3 हो, तो करतब के बाद उस मूल कार्ड की जगह डेक में तीन 3 हो जाएँगे।
const deck = [1, 3, 9, 3, 7];
threeOfEachThree(deck);
// => [1, 3, 3, 3, 9, 3, 3, 3, 7]
एलिस दस कार्डों का एक डेक लेगी, और बीच के दो कार्डों को छोड़कर बाकी हर कार्ड गायब कर देगी।
const deck = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
middleTwo(deck);
// => [5, 6]
एलिस डेक के सबसे ऊपर और सबसे नीचे वाले कार्ड को उल्टे क्रम में बीच में ले जाना चाहती है।
आप यह मान सकते हैं कि डेक में कार्डों की संख्या सम है।
const deck = [1, 2, 3, 5, 6, 10];
sandwichTrick(deck);
// => [2, 3, 10, 1, 5, 6]
एलिस की आज पसंदीदा संख्या 2 है। इस करतब में, हर वह कार्ड जो 2 नहीं है, डेक से गायब हो जाएगा।
const deck = [1, 2, 3, 4, 10, 2];
twoIsSpecial(deck);
// => [2, 2]
एलिस यह दिखाना चाहती है कि वह कार्डों को फिर से पूरी तरह क्रम में लगाने में माहिर है - चाहे डेक कितना भी अच्छी तरह फेंटा गया हो।
const deck = [10, 1, 5, 3, 2, 8, 7];
perfectlyOrdered(deck);
// => [1, 2, 3, 5, 7, 8, 10]
एलिस डेक में कार्डों का क्रम बदलना चाहती है। करतब के बाद, जो कार्ड अभी सबसे ऊपर है वह डेक के सबसे नीचे पहुँच जाना चाहिए। दूसरा कार्ड दूसरे सबसे नीचे पहुँच जाना चाहिए, वगैरह।
const deck = [10, 1, 5, 3, 2];
reorder(deck);
// => [2, 3, 5, 1, 10]
Exercism पर साइन अप कीजिए और JavaScript को 37 कॉन्सेप्ट159 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।