सरणियाँ

आपके पास एक शॉपिंग कार्ट है, स्कोर की एक सूची है, एक ग्रुप चैट में सभी के नाम हैं। एक चर एक मान रखता है, इसलिए इस तरह एक सूची संग्रहीत करने का मतलब है अलग-अलग नामों का ढेर: price1, price2, price3, और उन पर लूप करने या यह पूछने का कोई स्वच्छ तरीका नहीं कि कितने हैं। एक सरणी समाधान है। यह एक नाम के तहत मानों की एक क्रमबद्ध सूची रखता है, और यह अपनी स्वयं की लंबाई जानता है, इसलिए आप इसमें जोड़ सकते हैं, कोई भी आइटम पढ़ सकते हैं, और कुछ पंक्तियों में पूरी चीज़ को चला सकते हैं।
सरणी बनाना और पढ़ना
एक सरणी मानों की एक क्रमबद्ध सूची है। आप इसे वर्गाकार कोष्ठक के साथ लिखते हैं, मानों को अल्पविराम से अलग करते हैं:
const prices = [4, 9, 2, 7];यह एक चर है, prices, जो चार संख्याएँ रखता है। एक एकल मान पढ़ने के लिए आप इसकी स्थिति का उपयोग करते हैं, जिसे index कहा जाता है, वर्गाकार कोष्ठक में। पकड़ जो शुरुआत में लगभग सभी को भ्रमित करती है: गिनती एक से नहीं, शून्य से शुरू होती है।
const names = ["अमित", "राज", "योगी"];
console.log(names[0]); // अमित
console.log(names[1]); // राजयह पूछने के लिए कि एक सरणी में कितने आइटम हैं, .length का उपयोग करें:
console.log(names.length); // 3चूंकि गिनती शून्य से शुरू होती है, अंतिम आइटम length - 1 पर बैठता है, न कि length पर। तो अंतिम नाम यहाँ names[2] है, और names[3] अंत से आगे होगा।
names[0] से अपनी स्थिति से पढ़ें, और याद रखें कि गिनती शून्य से शुरू होती है, इसलिए पहला आइटम [0] है, [1] नहीं। वह शून्य मुझे एक हफ्ते के लिए भ्रमित करता था, इसलिए जब भी आपकी सूची एक से बंद हो तो इसे जांचें। आइटम को गिनने के लिए .length का उपयोग करें, और अंतिम आइटम length - 1 पर रहता है। सरणी को बदलना
सरणियाँ बदलने के लिए बनाई गई हैं। दो जो आप सबसे अधिक अंत में जोड़ते हैं: push एक आइटम जोड़ता है, pop अंतिम को हटाता है।
const cart = ["सेब", "ब्रेड"];
cart.push("दूध");
console.log(cart); // ["सेब", "ब्रेड", "दूध"]
cart.pop();
console.log(cart); // ["सेब", "ब्रेड"]मिलान करने वाली जोड़ी शुरुआत पर काम करती है: unshift सामने जोड़ता है, shift पहली आइटम को हटाता है।
cart.unshift("अंडे");
console.log(cart); // ["अंडे", "सेब", "ब्रेड"]आप अपनी index को सीधे assign करके एक आइटम को भी बदल सकते हैं:
cart[0] = "केला";
console.log(cart); // ["केला", "सेब", "ब्रेड"]कुछ खोजने के लिए, includes आपको हाँ या नहीं बताता है, और indexOf आपको बताता है कि यह कहाँ है (या -1 यदि यह नहीं है):
console.log(cart.includes("सेब")); // true
console.log(cart.indexOf("ब्रेड")); // 2जल्दी जानने के लिए एक चीज़: एक const सरणी अभी भी बदली जा सकती है। const आपको नाम cart को एक पूरी नई सरणी में reassign करने से रोकता है, लेकिन जो सूची यह इंगित करती है वह अभी भी push, pop, और index assignment के लिए खुली है।
push और pop अंत में जोड़ते और हटाते हैं; unshift और shift शुरुआत में भी ऐसा करते हैं। एक आइटम को cart[0] = "केला" की तरह बदलने के लिए एक index को assign करें, और एक को खोजने के लिए includes या indexOf का उपयोग करें। जो भाग मुझे आश्चर्य हुआ: एक const सरणी अभी भी बदल सकती है, क्योंकि const केवल आपको पूरी सरणी को एक नई सरणी के लिए स्वैप करने से रोकता है। सरणी के ऊपर लूप करना
एक बार जब आपके पास एक सूची हो, तो आप आमतौर पर हर आइटम के साथ कुछ करना चाहते हैं। एक सरणी के माध्यम से पढ़ने का सबसे स्वच्छ तरीका for...of है, जो आपको एक बार में एक आइटम देता है:
const prices = [4, 9, 2, 7];
for (const price of prices) {
console.log(price);
}
// 4
// 9
// 2
// 7आप एक index या एक counter को प्रबंधित नहीं करते। for...of आपको क्रम में प्रत्येक मान देता है, और आप इसे जैसे चाहें नाम दे सकते हैं (price)। यदि आपने पहले से loops से मिल गए हैं, यह सरणियों के लिए सबसे मैत्रीपूर्ण है।
यहाँ forEach भी है, जो हर आइटम के लिए एक बार एक छोटा function चलाता है:
const names = ["अमित", "राज", "योगी"];
names.forEach(function (name) {
console.log("नमस्ते " + name);
});दोनों पूरी सरणी को चलाते हैं। जब आप स्वच्छ रूप से पढ़ना चाहते हैं तो for...of पहुँचें, और जब आप सरणी को transform करना सीखेंगे तो आप forEach और इसके भाई-बहनों से फिर मिलेंगे।
for...of एक सरणी के माध्यम से चलने का स्वच्छ तरीका है: यह आपको क्रम में प्रत्येक आइटम देता है और आप कभी एक index को नहीं छूते हैं। forEach एक छोटे function को एक बार प्रति आइटम चलाता है, जो भी सुविधाजनक है। दोनों पूरी सूची के माध्यम से जाते हैं, इसलिए जब आप सीधे इसके माध्यम से पढ़ना चाहते हैं तो for...of को चुनें। आप सरणियों को transform करने का तरीका सीखने के बाद अधिक सरणी tools देखेंगे। सरणियाँ संदर्भ द्वारा रखी जाती हैं
यहाँ behaviour है जो लोगों को आश्चर्य चकित करता है, इसलिए इसे जल्दी देखना लायक है। जब आप एक सरणी चर को दूसरे नाम में copy करते हैं, आप दूसरी सरणी नहीं प्राप्त करते। दोनों नाम एक ही की ओर इंगित करते हैं।
const original = [1, 2, 3];
const copy = original;
copy.push(4);
console.log(original); // [1, 2, 3, 4]copy में pushing ने original को बदल दिया, क्योंकि केवल एक सरणी कभी थी। = ने दूसरे नाम को समान सूची दी, इसका एक ताज़ा copy नहीं। यह वह है जो लोग मतलब करते हैं जब वे कहते हैं कि सरणियाँ संदर्भ द्वारा रखी जाती हैं: चर एक सूची के लिए एक pointer रखता है, सूची स्वयं नहीं।
एक असली, अलग copy पाने के लिए, सरणी को ... से एक नई सरणी में spread करें:
const original = [1, 2, 3];
const copy = [...original];
copy.push(4);
console.log(original); // [1, 2, 3], untouched= से copy करना एक दूसरी सरणी नहीं बनाता है; दोनों नाम एक ही की ओर इंगित करते हैं, इसलिए या तो के माध्यम से एक परिवर्तन दोनों में दिखाई देता है। यह एक मुझे एक से अधिक बार bite किया है। जब आप एक असली अलग copy चाहते हैं, इसे [...original] से spread करें, जो एक ताज़ी सरणी बनाता है जिसे आप अपने पर बदल सकते हैं। सरणियाँ यहाँ से कहाँ जाती हैं
एक सरणी एक नाम के तहत एक ordered list देता है: इसे [] से बनाएँ, शून्य से पढ़ें, इसे push और pop से बदलें, और इसे for...of से चलाएँ। एक idea जो इस chapter को past carry करता है कि एक सरणी reference द्वारा रखी जाती है, इसलिए चर को copy करना सूची के बजाय slist को साझा करता है।
प्राकृतिक अगला कदम एक सरणी को दूसरी में बदलना है, एक सूची को filter करना, हर आइटम को transform करना, सब कुछ add करना, बिना लूप को हाथ से लिखे। यह array methods है। जब आपको एक स्थिति के बजाय एक नाम से values को look up करना चाहिए, objects वह structure हैं।

