آشنایی با مفهوم آرایه و روشهای ساخت آن در زبان جاوااسکریپت
Array (اَرِی) یکی از اصلیترین بخشهای هر زبان برنامهنویسی است به طوری که اگر بخواهیم مجموعهای از دادهها را در کنار یکدیگر ذخیره سازیم، از آرایه استفاده خواهیم کرد.
در آموزش آشنایی با مفهوم متغیر در زبان برنامهنویسی جاوااسکریپت، راجع به متغیرهایی صحبت کردیم که دارای محتوای جدا و مستقل بودند. مثلاً متغیر "var myName = "Sahand
یا متغیر عددی var firstNum = 7
همگی دارای یک محتوای مستقل از سایرین هستند اما برخی اوقات پیش میآید که میخواهیم تعدادی آیتم را در کنار یکدیگر و در یک مجموعه نگهداری کنیم که برای نمونه داریم:
- لیست خوانندههای مورد علاقه
- لیست زبانهای برنامهنویسی که بلد هستیم
- لیست برترین فیلمهای سال
- لیست تاریخ تولد افراد خانواده
- لیست خرید هفتگی
- لیست کارهای روزانه
- لیست اهدافی که برای سال جدید برای خود تعیین میکنیم و ...
اگر بخواهیم با استفاده از متغیرها چنین لیستهایی را ایجاد کنیم، باید هر کدام از آنها را تک به تک در یک متغیر جداگانه تعریف کنیم چرا که متغیرها فقط میتوانند یک داده را در خود ذخیره کنند. برای مثال، لیست خرید هفتگی ما به صورت زیر در خواهد آمد:
var item1 = "Bread";
var item2 = "Coke";
var item3 = "Cheese";
var item4 = "Rice";
var item5 = "Chocolate";
شاید این روش در کوتاهمدت و در برنامههای بسیار کوچک کاربرد داشته باشد اما مطمئناً پس از مدتی با مشکل مواجه خواهیم شد. مثلاً فرض کنید که بخواهیم این لیست خرید هفتگی را بر اساس حروف الفبا مرتب کنیم (کاری دشوار و زمانبر که در آن ضریب خطای ما هم بالا خواهد رفت.) زبان جاوا اسکریپت و البته هر زبان برنامهنویسی دیگری به ما اجازه میدهد که لیستی از داده ها را در کنار یکدیگر و در زیر چتر یک متغیر خاص ذخیره کنیم که تحت عنوان Array یا «آرایه» شناخته میشوند.
با کمک آرایه میتوانیم گروهی از دادههای مرتبط به یکدیگر را داخل یک متغیر نگهداری کنیم و نکتهٔ جالب دربارهٔ آرایهها این است که میتوانیم داخل یک آرایه، هر ترکیبی از دادهها را نگهداری کنیم. مثلاً یک آرایه میتواند به طور همزمان مجموعهای از دادههای متنی (استرینگ)، عددی، بولین، آبجکتها، فانکشنها و حتی یک آرایهٔ دیگر باشد.
قوانین ساخت آرایهها
هر آرایه از چند Element (عضو) تشکیل شده است و هر عضو در یک آرایه دارای نام اختصاصی خودش است که با نام آرایه به همراه عدد اندیس آن عضو داخل علائم [ ]
نشان داده میشود. آرایهها برای شناسایی زیرمجموعههای خود به هر کدام از عضوها یک عدد اختصاص میدهند که به این عدد Index (اندیس) گفته میشود.
برای آنکه بهتر بتوانیم این موضوع را متوجه شویم، ابتدا یک آرایه میسازیم. برای ساختن یک آرایهٔ جدید، جاوااسکریپت دو راه پیش روی ما میگذارد:
- ساخت آرایه به روش Literal Notation
- استفاده از کلیدواژهٔ new
در کنار آبجکت ()Array
سادهترین روش برای ساخت آرایه در جاوااسکریپت اصطلاحاً Literal Notation نامیده میشود به این شکل که در یک وهله تمامی المنتها را ایجاد کنیم. به طور مثال، آرایهٔ لیست خرید هفتگی را میتوان به صورت به یک آرایه تبدیل کرد:
var myArray = ["Bread", "Coke", "Cheese", "Rice", "Chocolate"];
این روش هیچ نیازی به کلیدواژهٔ خاصی ندارد و صرفاً با قرار دادن علائم []
میتوانید آرایهٔ مد نظر خود را بسازید. به علاوه، این روش دارای تعداد کلمات و کد کمتری است و زمانی که بخواهید کدهای جاوااسکریپت خود را به مرتبترین و سادهترین شکل ممکن بنویسید، حذف هر تکهٔ کوچک از کد میتواند تأثیرگذار باشد. حال اگر بخواهیم اندیسهای آرایه فوق را بهتر متوجه شویم، میتوان آنها را به صورت زیر متصور شد:
myArray[0] = "Bread";
myArray[1] = "Coke";
myArray[2] = "Cheese";
myArray[3] = "Rice";
myArray[4] = "Chocolate";
در این آرایه، عضو یا اِلِمنتی که در شمارهٔ ایندکس صفر قرار دارد دارای مقدار Bread است و عضوی با اندیس چهار مقدار Chocolate را در خود ذخیره کرده است. همین آرایه را میتوان با استفاده از آبجکتی به اصطلاح Built-in در زبان جاوااسکریپت تحت عنوان ()Array
ایجاد کرد:
var myArray = new Array("Bread", "Coke", "Cheese", "Rice", "Chocolate");
همانطور که در کد فوق ملاحظه میشود، ابتدا با استفاده از کلیدواژهٔ var
و انتخاب یک نام برای آرایهٔ خود همچون myArray
این آرایه را ایجاد کرده سپس یک علامت =
قرار دادیم و از کلیدواژهٔ new
که برای ساخت یک آبجکت جدید به کار می رود استفاده نموده و ()Array
را نوشته و مقادیر مد نظر خود را با استفاده از کاما از یکدیگر مجزا کرده و برایش در نظر گرفتهایم.
همانند هر متغیر دیگری، آرایهها هم میتوانند هر اسمی که ما بخواهیم داشته باشند (البته تا زمانی که خلاف قوانین نامگذاری جاوااسکریپت مثلاً استفاده از کلمات رزروشدهای مثل function
یا if
نباشند.) بدین ترتیب، با انتخاب تنها یک اسم برای آرایه، میتوانیم لیست تقریباً نامحدودی از دادهها را در داخل آن ذخیره کنیم. در عین حال، محدودیتی برای تعداد اعضای قابلذخیره در یک آرایه وجود دارد به طوری که هر آرایه میتواند نهایتاً 4/294/967/295 المنت را در خود نگاه دارد.
در کنار قوانین نامگذاری، آرایهها چند قانون و خصوصیت دیگر دارند که باید با آنها آشنا باشیم. اول اینکه بر خلاف ریاضیات روزمره که شمارش خود را از یک آغاز میکنیم، اندیسها در آرایهها از صفر شروع میشوند (به بیانی دیگر، اولین عضو آرایه اندیس صفر دارد و دومین عضو اندیس یک را در اختیار دارد و به همین ترتیب تا انتها پیش میرود. پس به خاطر داشته باشید که برای مثال [myArray[3
در حقیقت عضو چهارم آرایه است نَه عضو سوم آن!) و دوم هم اینکه آرایه میتواند هر دیتا تایپی را در خودش ذخیره سازد.
آشنایی با انواع دیتا تایپهایی که میتوان در آرایهها ذخیره کرد
هر عضور آرایه میتواند هر نوع دادهای که بخواهد را در خود نگاه دارد (برای آشنایی بیشتر با دیتا تایپها، به به آموزش آشنایی با انواع Data Type در زبان برنامهنویسی جاوااسکریپت مراجعه نمایید.) همچنین امکان ذخیرهٔ یک آرایه درون آرایهای دیگر هم وجود دارد مضاف بر اینکه میتوان فانکشنها و آبجکتها را نیز به عنوان یک عضور درون آرایهای ذخیره کرد که با این تفاسیر تقریباً دادهای باقی نمیماند که نتوانیم آن را درون آرایه بریزیم! علاوه بر امکان ذخیرهٔ هر نوع دادهای در یک آرایه، میتوانیم انواع مختلف داده را در کنار هم داخل یک آرایه داشته باشیم به طوری که برای مثال داریم:
var item = new Array(); //or we can use var item = [];
item[0] = "Havij";
item[1] = 6 + 8;
item[2] = 9;
item[3] = item[2] * item[1];
همینطور که میبینیم، تمامی این دادهها داخل آرایهای با نام item
ذخیره شدهاند. به عبارتی، ابتدا به ساکن یک آرایه تعریف کردهایم تحت عنوان item
که خالی است (برای ساخت آرایه همان طور که ملاحظه می شود، هم می توان از آبجکت ()Array
استفاده کرد و هم از یک جفت علامت []
استفاده نمود.) سپس تکتک اندیسهای آرایهٔ خود را مقداردهی کردهایم.
عضو اول با اندیس صفر استرینگ Havij را در خود ذخیره کرده، عضور دوم با اندیس یک جمع دو عدد را در خود نگاه داشته و عضو سوم هم صرفاً حاوی یک دادهٔ عددی است. همچنین المنت آخر که عضو چهارم با اندیس سه است در حقیقت یک نوع فانکشن کوچک است که مقادیر دو عضو دیگر را ضرب کرده و جواب آن را در خود ذخیره کرده است.
جمعبندی
در این آموزش کلیاتی را در ارتباط با آرایهها در زبان برنامهنویسی جاوااسکریپت بیان کردیم اما آنچه مسلم است اینکه مبحث آرایهها به مراتب گستردهتر از آنچه که بیان شد بوده و نیازمند مطالعهٔ بیشتر است.