مطالب آرايه ها در چندين بخش دنباله هم ارائه مي شود .بخش اول تحت عنوانJavaScript Arrays در صفحه ارائه ميشود .مابقي مطابق جدول زير:
عنوان بخش | لينك بخش |
---|---|
متدهاي آرايهJs Array Methods - | JS Array Methods |
سورت آرايهJS array Sort - | JS Array Sort |
تكرار در آرايهJS Array Iteration - | JS Array Iteration |
آرايه ثابتJS Array Const - | JS Array Const |
يك آرايه متغير خاصي است كه براي نگهداري چندين مقدار استفاده ميشود.
مثال ـ آرايه
const cars = ["Saab", "Volvo", "BMW"];
اگرليستي از آيتم وجود داشته باشد، مثلا ليستي از نام ماشين ها، براي ذخيره سازي آنها در متغيرهاي منفرد بفرم زير اقدام ميشود.
let car1 = "Saab"; let car2 = "Volvo"; let car3 = "BMW";
در اين صورت اگر بخواهيم با حلقه آنهارا دور برنيم ومورد خاصي را پيدا نمائيم چه .اگر ليست فوق 300 ماشين باشد و . ...راه حل مشكل آرايه است.
يك آرايه مقادير مختلفي را ميتواند تحت يك نام ذخيره نمايد .با مراجعه توسط شماره خاص به آن به مقادير دسترسي پيدا ميكنيم.
ساده ترين راه براي ايجاد آرايه در جاوااسكريپت، استفاده از آرايه ليترالي است.
عمل رايج براي ايجاد آرايه استفاده از كي و.ردconst است .
براي اطلاعات بيشتر در مورد كي وردconst به بخش JS Array Const مراجعه كنيد.
مثال ـ ايجاد آرايه
const cars = ["Saab", "Volvo", "BMW"];
فضاي خالي وشكست خط مهم نيست، يك اعلام ميتواند شامل چندين خط باشد.
مثال ـ اعلام آرايه در چند خط
const cars = [ "Saab", "Volvo", "BMW" ];
ميتوان آرايه را بدون مقدار ابتدا ايجاد نمود ومقادير عناصر آنرا تحت دستوراتي ديگري اعلام كرد .مطابق مثال بعدي
مثال ـ ايجاد آرايه بدون مقدار، ومقدار دهي با دستورات ديگر.
const cars = []; cars[0]= "Saab"; cars[1]= "Volvo"; cars[2]= "BMW";
در مثال زيربا كي وردnew همچنين ايجاد آرايه با مقادير شده ا ست .
مثال ـ ايجاد آرايه
const cars = new Array("Saab", "Volvo", "BMW");
دومثال بالا دقيقا مشابه هم ميباشند .براي ايجاد آرايه ضرورتي ندارد كه از new Array()استفاده نمائيد .
براي سادگي ، خوانائي و سرعت اجرا از فرم آرايه ليترالي استفاده نمائيد.
با مراجعه به شماره فهرست(index number) عنصر آرايه به آن ميتوان دسترسي پيداكرد.
مثال ـ دسترسي به عنصر آرايه
const cars = ["Saab", "Volvo", "BMW"]; let car = cars[0];
توجه ـ شاخص يا انديس آرايه براي عناصر از صفر شروع ميشود .اولين عنصر[0] ودومين آن [1]و ...
تغيير اولين عنصر آرايهcars مطابق زير است.
مثال ـ تغيير عنصر آرايه
const cars = ["Saab", "Volvo", "BMW"]; cars[0] = "Opel";
متدtoString() جاوااسكريپت يك آرايه را به رشته تبديل ميكند . نحوي استفاده مطابق زيراست.
مثال ـ نمونه تبديل آرايه به رشته
const fruits = ["Banana", "Orange", "Apple", "Mango"]; document.getElementById("demo").innerHTML = fruits.toString();
براي دسترسي كامل به آرايه فقط نام آن ذكر ميشود.
مثال ـ نمونه دسترسي كامل به آرايه
const cars = ["Saab", "Volvo", "BMW"]; document.getElementById("demo").innerHTML = cars;
آرايه ها يك نوع حاصي از اشياء جاوااسكريپت هستند .اگر آنها باtypeof ارزيابي شوند نتيجه برگشتي"object"ميباشد .
اما آرايه هاي جاوااسكريپت به بهترين روش بعنوان آرايه مطرح يا توصيف ميشوند .در دسترسي به آنها از اعداد يا شماره عنصر استفاده ميشود كه فرمت شئي ندارد .نمونهperson[0]
مثال ـ نوع آرايه اي
const person = ["John", "Doe", 46];
در شئ ها از نام شئ(names) براي دسترسي به عناصر "members"استفاده ميشود . در مثال بعديperson.firstName كه فرمت شئئ داردJhon را برگشت ميدهد .
مثال ـ آرايه در فرم شئي(object)
const person = {firstName:"John", lastName:"Doe", age:46};
متغيرهاي جاوااسكريپت ميتوانند شئ باشند .آرايه ها نوع خاصي از اشياءهستند .بهمين دليل ميتوان متغير بانوع مختلف در يك آرايه داشت.
ميتوان باتوجه بمطلب فوق، شئ در داخل آرايه داشت .يا تابع در آن قرارداد .يا آرايه در آرايه ايجاد كرد .نمونه ريرا توجه نمائيد.
myArray[0] = Date.now; myArray[1] = myFunction; myArray[2] = myCars;
قدرت واقعي آرايه ها در جاوااسكريپت داشتن ويژگي ومتدهاي پيش بيني شده يا داخلي آنهاست. بدين معني كه در جاوااسكريپت اين موارد ايجاد شده كه ميتوان استفاده كرد .نمونه زير:
cars.length // Returns the number of elements cars.sort() // Sorts the array
متدهاي آرايه در فصل بعدي پوشش داده شده است.
ويژگيlength آرايه، تعداد عناصر آنرا برگشت ميدهد .
مثال ـ ويژگيlength آرايه
const fruits = ["Banana", "Orange", "Apple", "Mango"]; let length = fruits.length;
در ويژگيlength هميشه عدد برگشتي يكي ازآخرين انديس آرايه بيشتر است.
مثال ـ نمونه دسترسي به اولين عنصر آرايه
const fruits = ["Banana", "Orange", "Apple", "Mango"]; let fruit = fruits[0];
مثال ـ نمونه دسترسي به عنصر آخر آرايه
const fruits = ["Banana", "Orange", "Apple", "Mango"]; let fruit = fruits[fruits.length - 1];
يكي از روش هاي دور زدن روي عناصرآرايه با حلقهfor است .
مثال ـ حلقهfor روي آرايه
const fruits = ["Banana", "Orange", "Apple", "Mango"]; let fLen = fruits.length; let text = "<ul>"; for (let i = 0; i < fLen; i++) { text += "<li>" + fruits[i] + "</li>"; } text += "</ul>";
همچنين ميتوان براي دور زدن در آرايه ازArray.forEach() استفاده كرد مطابق مثال زير:
const fruits = ["Banana", "Orange", "Apple", "Mango"]; let text = "<ul>"; fruits.forEach(myFunction); text += "</ul>"; function myFunction(value) { text += "<li>" + value + "</li>"; }
آسانترين روش براي اضافه نمودن عنصر به آرايه استفاده از متدpush() ميباشد.
مثال ـ افزايش عنصري به آرايه
const fruits = ["Banana", "Orange", "Apple"];
fruits.push("Lemon"); // Adds a new element (Lemon) to fruits
با استفاده از ويژگيlength ميتوان عنصرجديدي به آرايه اضافه كرد .
مثال ـ افرايش عنصر در آرايه با ويژگيlength
const fruits = ["Banana", "Orange", "Apple"]; fruits[fruits.length] = "Lemon"; // Adds "Lemon" to fruits
هشدار ـ افزودن عنصر در آرايه با انديس يا شاخص بزرگتر ازlength آرايه حفرهاي تعريف نشده اي ايجاد ميكند.
مثال ـ ايجاد حفره در آرايه
const fruits = ["Banana", "Orange", "Apple"]; fruits[6] = "Lemon"; // Creates undefined "holes" in fruits
تعدادي از زبانهاي برنامه نويسي درآرايه انديس هاي با نام را پشتيباني ميكنند .يعني بجاي انديس عددي ،از نام استفاده ميكنند.آرايه هاي انديس بانام را آرايه انجمنيAssociatative مي نامند.
جاوااسكريپت اين نوع آرايه را پشتيباني نميكند .انديس آرايه در جاوااسكريپت عددي صحيح مثبت وصفراست.
مثال ـ آرايه انديس عددي
const person = []; person[0] = "John"; person[1] = "Doe"; person[2] = 46; person.length; // Will return 3 person[0]; // Will return "John"
هشدار ـ اگر در آرايه انديس نامي استفاده نمائيد، جاوااسكريپت آرايه را بصورت شئ دوباره تعريف ميكند .بعداز اين اتفاق بعضي از ويژگي ومتدهاي نتيجه نادرست ايجاد ميكنند.
مثال ـ استفاده نادرست ازآرايه باانديس نامي
const person = [];
person["firstName"] = "John";
person["lastName"] = "Doe";
person["age"] = 46;
person.length; // Will return 0
person[0];
در جاوااسكريپت آرايه ها داراي انديس عددي اند، اما اشياء مشابه آرايه داراي انديس نامي هستند
آرايه ها نوع خاصي از اشياء هستند كه شاخص هاي شماره گذاري شده استفاده ميكنند.
جاوااسكريپت داراي يك سازنده جديد داخلي new Arrar() براي آرايه دارد .از اين با اطمينان بجاي[ ] استفاده كنيد .
اين دو دست دستور مختلف هردو آرايه خالي با نامpoints ايجاد ميكنند .
const points = new Array();
const points = [];
اين دو دستور مختلف هر دو آرايه جديدي شامل شش عدد ايجاد ميكنند.
const points = new Array(40, 100, 1, 5, 25, 10);
const points = [40, 100, 1, 5, 25, 10];
كي وردnew ميتواند بعضي از نتايج دور ازانتظار ايجاد نمايد .
// Create an array with three elements:
const points = new Array(40, 100, 1);
// Create an array with two elements:
const points = new Array(40, 100);
// Create an array with one element ???
const points = new Array(40);
در مورديكه اين دو روش ايجاد آرايه ، يك عنصر داشته باشند، برخورد يكنواختي باآن ندارند.
در زير يك خطاي رايج است .وپذيرفته ميشود.
// Create an array with one element: const points = [40];
اما مشابه بالا برايnew برخورد متفاوت واجتناب از استفاده را پيغام ميدهد .
// Create an array with one element: const points = [40];
// Create an array with 40 undefined elements:
const points = new Array(40);
اين سوال رايج مطرح است ، كه چگونه يك آرايه را شناسائي كنيم . مشكل اين است كه با typeofارزيابي شوند، نتيجهobject برگشت ميشود . نونه زير:
const fruits = ["Banana", "Orange", "Apple"]; let type = typeof fruits;
براي حل مسئلهECMAScript 5(JavaScript 2009) متد جديد Array.isarray()تعريف شده است .
Array.isArray(fruits);
عملگرnstanceof نتيجهtrue برگشت ميدهد، اگر شي بوسيله يك سازنده ايجاد شده باشد.
const fruits = ["Banana", "Orange", "Apple"]; fruits instanceof Array;