القوائم في JavaScript
- الصفحة السابقة خصائص الأعداد في JS
- الصفحة التالية طرق الأنواع لـ JS
تستخدم مجموعات JavaScript لتخزين عدة قيم في متغير واحد.
ما هو المجموعة؟
المجموعة هي متغير خاص يمكنه تخزين أكثر من قيمة واحدة في وقت واحد.
إذا كان لديك قائمة بالمشاريع (مثل قائمة علامات تجارية السيارات)، يجب أن تكون مثل هذا لتخزين علامات تجارية السيارات في متغير واحد:
var car1 = "Saab"; var car2 = "Volvo"; var car3 = "BMW";
لكن ماذا إذا كنت ترغب في مرور جميع السيارات والبحث عن قيمة معينة؟ ماذا إذا لم تكن هناك ثلاثة علامات تجارية للسيارات بل ثلاثمئة علامة تجارية؟
الحل هو مجموعة!
يمكن استخدام المجموعة لتخزين العديد من القيم في اسم واحد، ويمكن الوصول إلى هذه القيم من خلال التسمية بالرقم.
إنشاء مجموعة
استخدام نص المجموعة هو أسهل طريقة لإنشاء مجموعة في JavaScript.
النص:
var array-name = [item1, item2, ...];
مثال
var cars = ["Saab", "Volvo", "BMW"];
الفضاءات والخطوط المنقوطة ليست مهمة. يمكن أن تكون البيانات في سطر واحد:
مثال
var cars = [ "Saab", "Volvo", "BMW" ];
لا تدخل علامة الفصل في العنصر الأخير (مثل "BMW",).
قد يكون هناك مشاكل في التشغيل عبر المتصفحات.
استخدام كلمة المفتاح JavaScript new
الآن سنرى مثال آخر سيقوم بإنشاء مجموعة، وسيتم تعيين قيم لها:
مثال
var cars = new Array("Saab", "Volvo", "BMW");
تأثير هذين المثالين هو متطابق تمامًا.لا تحتاج إلى استخدام new Array()
.
من أجل البساطة، والقراءة، والسرعة في التنفيذ، يرجى استخدام الطريقة الأولى (طريقة نص المجموعة).
للوصول إلى عنصر المجموعة
نحن نستخدمرقم المفتاح (رقم السجل)لإشارة إلى عنصر المجموعة.
هذا التعليمات يستدعي قيمة العنصر الأول في cars:
var name = cars[0];
هذا التعليمات يعدل العنصر الأول في cars:
cars[0] = "Opel";
مثال
var cars = ["Saab", "Volvo", "BMW"]; document.getElementById("demo").innerHTML = cars[0];
[0] هو العنصر الأول في المجموعة.[1] هو الثاني.بدء من 0 هو عدد الأنماط.
تغيير عنصر المجموعة
هذا التعليمات يعدل قيمة العنصر الأول في cars:
cars[0] = "Opel";
مثال
var cars = ["Saab", "Volvo", "BMW"]; cars[0] = "Opel"; document.getElementById("demo").innerHTML = cars[0];
زيارة القائمة بكاملها
باستخدام JavaScript، يمكنك الوصول إلى القائمة بكاملها من خلال اسم القائمة:
مثال
var cars = ["Saab", "Volvo", "BMW"]; document.getElementById("demo").innerHTML = cars;
القائمة هي كائن
القائمة هي نوع خاص من الكائنات. في JavaScript، يمكنك استخدام typeof
العمليات تعود بـ "object".
لكن، أفضل طريقة لوصف قائمة JavaScript هي باستخدام قائمة.
استخدام القائمةالعددللوصول إلى "العنصر". في هذا المثال،person[0]
ترجع Bill:
القائمة:
var person = ["Bill", "Gates", 62];
استخدام الكائنالاسمللوصول إلى "العضو". في هذا المثال،person.firstName
ترجع Bill:
الكائن:
var person = {firstName:"Bill", lastName:"Gates", age:19};
عناصر القائمة يمكن أن تكون كائنات
يمكن أن تكون المتغيرات في JavaScript كائنات. القائمة هي نوع خاص من الكائنات.
لذلك، يمكنك وضع أنواع متعددة من المتغيرات في نفس القائمة.
يمكنك حفظ الأشياء في القائمة. يمكنك حفظ الدوال في القائمة. يمكنك حتى حفظ قائمة داخل قائمة:
myArray[0] = Date.now; myArray[1] = myFunction; myArray[2] = myCars;
خصائص وطرق القائمة
القوة الحقيقية لقائمة JavaScript مخفية في خصائصها وطرقها:
مثال
var x = cars.length; // تعود خصائص الطول بعدد العناصر var y = cars.sort(); // تقوم دالة sort() بترتيب القائمة
سنتعلم في الفصل القادم طرق القائمة.
خصائص الطول
length
الخصائص تعود بطول القائمة (عدد عناصر القائمة).
مثال
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.length; // طول fruits هو 4
length
الخصائص دائمًا أكبر من أعلى معلمة القائمة (السجل).
زيارة العنصر الأول في القائمة
مثال
fruits = ["Banana", "Orange", "Apple", "Mango"]; var first = fruits[0];
زيارة العنصر الأخير في القائمة
مثال
fruits = ["Banana", "Orange", "Apple", "Mango"]; var last = fruits[fruits.length - 1];
استكشاف عناصر القائمة
الطريقة الأكثر أمانًا لاستكشاف قائمة الأرقام هي استخدام "for
"دائرة اللفة:"
مثال
var fruits, text, fLen, i; fruits = ["Banana", "Orange", "Apple", "Mango"]; fLen = fruits.length; text = "<ul>"; for (i = 0; i < fLen; i++) { text += "<li>" + fruits[i] + "</li>"; }
يمكنك أيضًا استخدام Array.foreach()
الوظيفة:
مثال
var fruits, text; fruits = ["Banana", "Orange", "Apple", "Mango"]; text = "<ul>"; fruits.forEach(myFunction); text += "</ul>"; function myFunction(value) { text += "<li>" + value + "</li>"; }
إضافة عنصر إلى المجموعة
أفضل طريقة لإضافة عنصر إلى المجموعة هي استخدام push()
الطريقة:
مثال
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.push("Lemon"); // إضافة عنصر جديد (Lemon) إلى fruits
يمكن أيضًا استخدام length
لإضافة عنصر جديد إلى المجموعة يمكن استخدام
مثال
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits[fruits.length] = "Lemon"; // إضافة عنصر جديد (Lemon) إلى fruits
تحذير!
إضافة العنصر بتفاصيل أعلى من الرقم الأعلى في المجموعة يمكن أن يخلق "فراغًا غير معرف":
مثال
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits[6] = "Lemon"; // إضافة عنصر جديد (Lemon) إلى fruits
المجموعات المرتبطة
العديد من العناصر البرمجية يدعم المجموعات بتسمية المرجعية.
المجموعات التي تحتوي على تسمية المرجعية تسمى مجموعات مرتبطة (أو مشتقة).
جافا سكربت ليس يدعمالمجموعات بتسمية المرجعية.
في جافا سكربت، يمكن استخدام المجموعات فقطالمؤشرات数字ية.
مثال
var person = []; person[0] = "Bill"; person[1] = "Gates"; person[2] = 62; var x = person.length; // person.length يعود 3 var y = person[0]; // person[0] يعود "Bill"
تحذير!
إذا كنت تستخدم التسمية المرجعية، سيقوم جافا سكربت بتغيير المجموعة إلى عنصر معياري.
بعد از آن، جميع طرق و خصائص المجموعات ستنتج نتائج غير صحيحة.
مثال:
var person = []; person["firstName"] = "Bill"; person["lastName"] = "Gates"; person["age"] = 62; var x = person.length; // person.length سيعود 0 var y = person[0]; // person[0] سيعود undefined
الفرق بين القائمة والكائن
في جافا سكربت،القائمةاستخدامالمؤشرات数字ية.
في جافا سكربت،الكائناستخدامالمؤشرات المسماة.
القائمة هي نوع خاص من الكائنات، تحتوي على مؤشرات数字ية.
متى تستخدم القائمة، ومتى تستخدم الكائن؟
- لا يدعم جافا سكربت القوائم المرتبطة
- إذا كنت ترغب في تسمية العناصرالنص (النص)إذن يجب استخدامهالكائن.
- إذا كنت ترغب في تسمية العناصرالعددإذن يجب استخدامهالقائمة.
تجنب new Array()
ليس من الضروري استخدام بناء القائمة المدمج في جافا سكربت new Array()
.
استخدم []
بدلاً من ذلك!
تأسيسًا لعدد من العبارات المختلفة، تُنشأ قائمة فارغة جديدة باسم points:
var points = new Array(); // سيء var points = []; // جيد
تأسيسًا لعدد من العبارات المختلفة، تُنشأ قائمة تحتوي على ستة أرقام جديدة:
var points = new Array(40, 100, 1, 5, 25, 10); // سيء var points = [40, 100, 1, 5, 25, 10]; // جيد
new
الكلمات المفتاحية تجعل الكود معقدًا. ستجلب أيضًا بعض النتائج غير المتوقعة:
var points = new Array(40, 100); // إنشاء قائمة تحتوي على عنصرين (40 و 100)
ماذا سيحدث إذا قمت بإزالة عنصر واحد؟
var points = new Array(40); // إنشاء قائمة تحتوي على 40 عنصر غير معرف!
كيف يمكن تحديد القائمة
السؤال الشائع هو: كيف يمكنني معرفة ما إذا كان متغير ما هو قائمة؟
المشكلة تكمن في عموديات جافا سكربت typeof
يعود "العدة
":
var fruits = ["Banana", "Orange", "Apple", "Mango"]; typeof fruits; // يعود "العدة"
وظيفة عمودية يعود "العدة"، لأن جافا سكربت قائمة هي كائن.
الحل 1:
لحل هذه المشكلة، قام ECMAScript 5 بتعريف طريقة جديدة Array.isArray()
:
Array.isArray(fruits); // يعود إلى true
مشكلة هذا الحل تكمن في ECMAScript 5 لا يدعم المتصفحات القديمة.
الحل 2:
أنشئ الخاص بك isArray()
الوظيفة لتحل هذا المشكلة:
function isArray(x) { return x.constructor.toString().indexOf("Array") > -1; }
إذا كان المعامل مصدرًا للعدد، فإن الدالة أعلاه تعود دائمًا إلى true.
أو بتفسير أكثر دقة: إذا كان العنصر يحتوي على الكلمة "Array" في原型، فإنه يعود إلى true.
الحل 3:
إذا كان العنصر مكونًا من قبل المبنى المحدد، instanceof المعادلة تعود إلى true:
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits instanceof Array // يعود إلى true
- الصفحة السابقة خصائص الأعداد في JS
- الصفحة التالية طرق الأنواع لـ JS