طَبِّقْهاتعلّم المبدأ، وطبّقه بيدكمقرر 131 · تقنيات تطوير الواجهات الأمامية
الدرس 24 · الوحدة 7: التعرف على JavaScript

المصفوفات والكائنات

نخزّن مجموعات البيانات: قائمة منتجات، ومعلومات كل منتج. ⏱ نحو 25 دقيقة.

801215215394name:"قهوة"price:12
بعد هذا الدرس ستستطيع أن:
  • تنشئ مصفوفة وتصل إلى عناصرها وتضيف إليها.
  • تمر على المصفوفة بحلقة for...of.
  • تنشئ كائنًا بمفاتيح وقيم وتصل إليها بالنقطة.
  • تتعامل مع مصفوفة كائنات، وتتعرف على JSON.

١المصفوفة: قائمة قيم

المصفوفة Array في JavaScript مثل القائمة list في بايثون تمامًا: قيم بين قوسين مربعين، وأول خانة رقمها 0:

const prices = [8, 12, 5, 15]; console.log(prices[0]);console.log(prices.length); prices.push(20);console.log(prices);
Console×
8
4
[8, 12, 5, 15, 20]
العمليةJavaScriptبايثون
عدد العناصرprices.lengthlen(prices)
إضافة في الآخرprices.push(20)prices.append(20)
حذف الأخيرprices.pop()prices.pop()
هل يوجد؟prices.includes(5)5 in prices

٢المرور على المصفوفة

const drinks = ["قهوة", "شاي", "عصير"]; // for...of: مثل for x in في بايثونfor (const d of drinks) {  console.log("لدينا:", d);} // المجموعconst prices = [8, 12, 5];let total = 0;for (const p of prices) {  total += p;}console.log("المجموع:", total);
Console×
لدينا: قهوة
لدينا: شاي
لدينا: عصير
المجموع: 25

for (const d of drinks) أسهل طريقة للمرور على كل العناصر. وتذكر: of لا in.

٣الكائن: مفاتيح وقيم

الكائن Object مثل القاموس dict في بايثون: يجمع معلومات شيء واحد بمفاتيح أسمائها واضحة:

const product = {  name: "قهوة مختصة",  price: 18,  available: true}; console.log(product.name);console.log(product["price"]); product.price = 20;product.size = "كبير";console.log(product);
Console×
قهوة مختصة
18
{name: "قهوة مختصة", price: 20, available: true, size: "كبير"}

نصل إلى القيمة بالنقطة product.name (الأشهر)، أو بالقوسين product["name"]. ونضيف مفتاحًا جديدًا بمجرد إسناد قيمة له.

٤مصفوفة من الكائنات

هكذا تصل البيانات إلى الصفحة غالبًا من الخادم: قائمة منتجات، كل منتج كائن:

const menu = [  { name: "قهوة عربية", price: 8 },  { name: "قهوة مختصة", price: 18 },  { name: "شاي", price: 5 }]; for (const item of menu) {  console.log(`${item.name}: ${item.price} ريال`);} const cheap = menu.filter(item => item.price < 10);console.log("الأرخص من 10:", cheap.length);
Console×
قهوة عربية: 8 ريال
قهوة مختصة: 18 ريال
شاي: 5 ريال
الأرخص من 10: 2

٥JSON: لغة تبادل البيانات

شكل الكائنات والمصفوفات هذا صار لغة عالمية لتبادل البيانات بين المواقع والخوادم اسمها JSON. الفرق: المفاتيح بين علامتي تنصيص:

{  "name": "قهوة مختصة",  "price": 18,  "sizes": ["صغير", "كبير"]}

ستستخدم JSON كثيرًا في مقرر الواجهات الخلفية، حين تجلب الصفحة البيانات من الخادم.

توقّع وتحقّق

ما رقم أول خانة في المصفوفة؟

مثل بايثون.

إضافة عنصر في آخر المصفوفة:

push.

في الكائن {price: 18} كيف نصل إلى 18؟

النقطة.

للمرور على قيم المصفوفة:

of للقيم.

الخلاصة

تحدٍّ برمجي: سلة المشتريات

متوسط

لديك سلة مشتريات: مصفوفة كائنات، لكل كائن الاسم والسعر والكمية. اطبع كل صنف وإجمالي سعره، ثم المجموع الكلي.

المطلوب:
  • مر على السلة بحلقة for...of.
  • لكل صنف اطبع: الاسم × الكمية = الإجمالي، مثل: قهوة × 2 = 24
  • في الأخير اطبع: المجموع: 47
👀 اعرض شكل الناتج المطلوب
المطلوب×
قهوة × 2 = 24
كيك × 1 = 15
ماء × 2 = 8
المجموع: 47
✓ التحقق الآلي من حلّك:
  • يطبع: قهوة × 2 = 24
  • يطبع: كيك × 1 = 15
  • يطبع: ماء × 2 = 8
  • آخر سطر: المجموع: 47

💡 تلميح 1
for (const item of cart) { … item.price * item.qty … }
💡 تلميح 2
العلامة × تجدها في الكود الأولي، أو انسخها من هنا: ×

حاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.

const cart = [  { name: "قهوة", price: 12, qty: 2 },  { name: "كيك", price: 15, qty: 1 },  { name: "ماء", price: 4, qty: 2 }]; let total = 0;for (const item of cart) {  const sum = item.price * item.qty;  console.log(`${item.name} × ${item.qty} = ${sum}`);  total += sum;}console.log(`المجموع: ${total}`);
انتقل إلى تقييم الدرساختيار من متعدد، وصح وخطأ، وأكمل الفراغ، وتتبّع الناتج.ابدأ التقييم ←

📝 معلم؟ أرسل ملاحظة للمؤلف عن هذا الدرس