دانش بایت

ورود ورود

آرایه‌ها در برنامه نویسی جاوا اسکریپت

در زبان‌های برنامه‌نویسی از آرایه‌ها برای ذخیره‌ی تعدادی داده استفاده می‌کنند. برای مثال تصورکنید قصد دارید نام سه دانشجو را در متغیرهایی ذخیره کنید. بدون استفاده از آرایه، کد شما تقریبا به حالت زیر خواهد شد : 

let name1 = "Ali";
let name2 = "Sarah";
let name3 = "Reza";

همان‌طور که در کد بالا مشاهده کردید، برای ذخیره‌ی نام سه دانشجو، سه متغیر با نام‌های متفاوت ایجاد کردیم. اکنون اگر بخواهیم نام دانشجوی دیگری را هم ذخیره کنیم، چه باید بکنیم؟ با دانسته‌های فعلی خواهید گفت که باید یک متغیر دیگر به نام name4 ایجاد کنیم و نام جدید را در آن ذخیره کنیم. بله این روش مسئله‌ی ما را برطرف می‌کند ولی آیا افزودن یک داده‌ی جدید همیشه باید با افزودن یک متغیر با نام جدید همراه باشد؟

برای مثلا تصور کنید در یک سیستم دانشگاهی، نام دانشجوهای فعلی به صورت بالا ذخیره شده باشد، اکنون اگر دانشجوی جدیدی بخواهد در این دانشگاه تحصیل کند باید نام اون هم اضافه شود. آیا این درست است که به دانشجو بگوییم «لطفا کمی صبر کنید تا برنامه‌نویس سامانه کدهای سیستم را تغییر دهد تا بتوانیم اطلاعات شما را ذخیره کنیم». به‌طور قطع می‌توان گفت که این روش برای ذخیره‌ی تعداد زیادی از داده‌ها به هیچ‌عنوان کاربردی نیست.

در این شرایط است که می‌توانیم از آرایه‌ها استفاده کنیم. توسط آرایه می‌توانیم تعداد زیادی داده را تنها در یک متغیر ذخیره کنیم و به همین علت برای افزودن داده‌ی جدید نیازی به تعریف متغیرهای جدید با نام‌های جدید نخواهیم داشت.

در جاوا اسکریپت، یک آرایه را می‌توانیم با یکی از دو روش زیر ایجاد کنیم:

let a = [];
let b = new Array();

در کدهای بالا متغیرهای a و b هردو یک آرایه‌ی خالی هستند و داده‌ای داخل آن‌ها ذخیره نشده است. باوجود این‌که دو روش برای تعریف آرایه‌ها وجود دارد، ولی پیشنهاد می‌شود که از روش اول (استفاده از علامت‌های براکت [ و ]) برای ایجاد آرایه استفاده شود، چراکه هم خلاصه‌تر است و هم باعث تمیزی و کم‌تر شدن کدها می‌شود.

اکنون در مثال زیر، نام سه دانشجوی قبلی را در یک آرایه ذخیره می‌کنیم:

let names = ["Ali", "Sarah", "Reza"];
console.log(names);
['Ali', 'Sarah', 'Reza']

همان‌طور که در خروجی کد بالا مشاهده می‌کنید، هر سه نام نوشته‌شده در آرایه به‌درستی در آرایه ذخیره شدند و نمایش داده می‌شوند. براساس کد بالا، می‌توانیم داده‌های موردنظر را هنگام تعریف آرایه بین علامت‌های براکت قرار دهیم ولی حتما باید بین هرکدام از این داده‌ها از علامت کاما (,) استفاده کنیم. 

آیا می‌توانیم بعد از نوشتن آخرین داده هم از , استفاده کنیم؟

بله، می‌توانید این کار را انجام دهید. برای مثال کد زیر بدون هیچ مشکلی اجرا خواهدشد:

let names = ["Ali", "Sarah", "Reza",];
console.log(names);
['Ali', 'Sarah', 'Reza']

آیا داده‌های داخل یک آرایه باید همگی از یک نوع باشند؟

زبان جاوا اسکریپت محدودیتی برای یکسان بودن نوع داده‌هایی که در یک آرایه ذخیره می‌کنید ندارد و می‌توانید داده‌هایی از انواع مختلف را بدون هیچ مشکلی در یک آرایه ذخیره کنید. برای مثال مشکلی در اجرای کد زیر وجود نخواهد داشت:

let data = [14, "Mohammad", true, 5.8];
[14, 'Mohammad', true, 5.8]

آیا ترتیب قرارگیری داده‌ها در آرایه مهم است؟

بله، ترتیب داده‌ها در آرایه اهمیت خاصی دارد چراکه هرکدام از داده‌های داخل آرایه دارای یک آدرس یا اندیس هستند و با دانستن محل قرارگیری یک داده در آرایه می‌توانیم به محتوای آن داده دسترسی داشته باشیم.

مفهوم اندیس آرایه در جاوا اسکریپت

آرایه‌ها می‌توانند تعداد زیادی داده را داخل خود ذخیره کنند ولی باید به عنوان برنامه‌نویس بتوانیم به تمام داده‌های ذخیره‌شده به‌صورت جداگانه دسترسی داشته‌باشیم تا برای مثال آن‌ها را ویرایش کنیم و یا این‌که به‌صورت جداگانه نمایش دهیم. به‌همین علت تمام داده‌هایی که در یک آرایه ذخیره می‌شوند دارای یک کد منحصربه‌فرد خواهند بود که بتوان به آن‌ها دسترسی داشت. به این کد منحصربه‌فرد در برنامه‌نویسی اندیس گفته می‌شود.

اندیس اولین داده در آرایه همیشه صفر است و اندیس دومین داده یک خواهد بود و بعدی عدد دو و به همین‌ترتیب داده‌های بعدی هم اندیس‌گذاری می‌شوند.

به‌دلیل این‌که اندیس آرایه‌ها از عدد صفر آغاز می‌شود، برای به‌دست آوردن بزرگ‌ترین اندیس یک آرایه که مربوط به آخرین داده در آرایه می‌باشد فقط کافیست تعداد داده‌های داخل آرایه (طول آرایه) را بدانیم و سپس یک واحد از آن کم کنیم. برای مثال بزرگ‌ترین اندیس آرایه‌ای که دارای ۱۰ داده است، برابر عدد ۹ خواهد بود. 

در کد زیر نحوه‌ی دسترسی به داده‌های یک آرایه توسط اندیس‌ها را مشاهده می‌کنید:

let numbers = [10, 17, 37, 92, 6, 10];
console.log(numbers); // نمایش تمام آرایه
console.log(numbers[0]); // اولین داده در آرایه
console.log(numbers[1]); // دومین داده در آرایه
console.log(numbers[5]); // آخرین داده‌ی آرایه قبل از ویرایش
numbers[5] = 20; // ویرایش آخرین داده‌ی آرایه
console.log(numbers[5]); // آخرین داده‌ی آرایه بعد از ویرایش
console.log(numbers[3]); // چهارمین داده قبل از ویرایش
numbers[3]++; // ویرایش چهارمین داده‌ی آرایه
console.log(numbers[3]); // چهارمین داده بعد از ویرایش
console.log(numbers); // نمایش تمام آرایه بعد از تغییرات بالا
[10, 17, 37, 92, 6, 10]
10
17
10
20
92
93
[10, 17, 37, 93, 6, 20]

اگر از اندیس اشتباه استفاده‌کنیم چه می‌شود؟

اگر شما هنگام استفاده از اندیس آرایه، از عدد اشتباهی استفاده کنید (برای مثال بخواهید داده‌ی اندیس شماره ۵ را نمایش دهید ولی آن آرایه دارای تنها ۳ داده باشد)، جاوا اسکریپت به شما مقدار undefined را نمایش خواهدداد. کلمه‌ی undefined به‌معنی «تعریف‌نشده» است.

let names = ['Ali', 'Reza', 'Zahra'];
console.log(names[2]); // محتوای سومین داده
console.log(names[3]); // محتوای چهارمین داده
console.log(names[4]); // محتوای پنجمین داده
Zahra
undefined
undefined

طول آرایه در جاوا اسکریپت

برای به‌دست آوردن تعداد داده‌های داخل یک آرایه که به آن طول آرایه گفته می‌شود نیازی به شمردن ندارید. بلکه می‌توانید از ویژگی length که به‌صورت پیش‌فرض در آرایه‌ها قراردارد استفاده کنید. به مثال زیر توجه کنید : 

let a = [];
let b = [45, 90];
let c = [1, 0, -12, 10];
console.log(a.length);
console.log(b.length);
console.log(c.length);
0
2
4

پیمایش در آرایه‌ها

در آرایه‌ها اغلب نیازداریم تا محتوای تمام داده‌ها را بررسی کنیم. برای درک بهتر این‌موضوع به مثال زیر توجه کنید :

تصور کنید نمرات نهایی یک ترم دانشجویی را در یک آرایه ذخیره کرده‌ایم و اکنون می‌خواهیم بررسی کنیم که میانگین نمرات دریافتی دانشجو چه عددی است. برای این‌کار نیازداریم تمام نمرات او را با یک‌دیگر جمع کنیم و حاصل‌جمع نهایی را تقسیم‌بر تعداد نمرات کنیم. پس باید محتوای تک‌به‌تک اندیس‌ها را بررسی کنیم و در محاسبات خود استفاده کنیم.

به این‌کار در برنامه‌نویسی پیمایش گفته‌ می‌شود و با حلقه‌های تکرار می‌توان این‌کار را به‌راحتی انجام داد، فقط کافیست از اندیس صفر آرایه شروع به حرکت کنیم و پس از هر مرحله اندیس بعدی را بررسی کنیم. در انجام پیشمایش باید دقت داشته‌باشیم که اندیس‌ها بیشتر از تعداد موجود در آرایه نشود.

کد زیر با فرض اینکه نمرات دانشجو در آرایه‌ی score ذخیره شده‌است تلاش دارد میانگین نمرات او را به‌دست بیاورد:

let scores = [14, 17, 12.75, 20, 18, 19.5];
let sum = 0; // مقدار اولیه‌ی جمع نمرات صفر درنظر گرفته شده‌است
for(let i=0; i < scores.length; i++){
	sum += scores[i]; // اضافه‌کردن یک نمره به مجموع نمرات
}
let average = sum / scores.length; // جمع نمرات تقسیم‌بر تعداد نمرات
console.log("average is : " + average);
average is : 16.875

آیا همیشه برای پیشمایش در آرایه باید از اندیس صفر شروع کرد؟

خیر، متناسب با روشی که برای حل مسئله‌ی خود دارید می‌توانید در شرایطی پیشمایش را از انتهای آرایه شروع کنید و به ابتدای آرایه برسید،‌ و یا این‌که از اندیس ۱۰ شروع و تنها تا اندیس ۱۳ پیمایش‌کنید. نحوه‌ی پیمایش را هرطور که بخواهید می‌توانید کنترل کنید. برای مثال کد زیر یک پیمایش از انتهای آرایه تا ابتدای آن دارد:

let a = [12, 14, 15, -20, 30];
for(let i=a.length-1; i>=0; i--){
	console.log(a[i]);
}
30
-20
15
14
12
برچسب‌ها :
جاوا اسکریپت | javascript