المصفوفات والكائنات
نخزّن مجموعات البيانات: قائمة منتجات، ومعلومات كل منتج. ⏱ نحو 25 دقيقة.
- تنشئ مصفوفة وتصل إلى عناصرها وتضيف إليها.
- تمر على المصفوفة بحلقة
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);
| العملية | JavaScript | بايثون |
|---|---|---|
| عدد العناصر | prices.length | len(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);
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);
نصل إلى القيمة بالنقطة 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);
٥JSON: لغة تبادل البيانات
شكل الكائنات والمصفوفات هذا صار لغة عالمية لتبادل البيانات بين المواقع والخوادم اسمها JSON. الفرق: المفاتيح بين علامتي تنصيص:
{ "name": "قهوة مختصة", "price": 18, "sizes": ["صغير", "كبير"]}
ستستخدم JSON كثيرًا في مقرر الواجهات الخلفية، حين تجلب الصفحة البيانات من الخادم.
توقّع وتحقّق
ما رقم أول خانة في المصفوفة؟
إضافة عنصر في آخر المصفوفة:
push.في الكائن {price: 18} كيف نصل إلى 18؟
للمرور على قيم المصفوفة:
of للقيم.الخلاصة
- المصفوفة
[ ]مثلlist، وأول خانة 0، وlengthللطول، وpushللإضافة. for (const x of arr)للمرور على القيم.- الكائن { مفتاح: قيمة } مثل
dict، والوصول بـobj.key. - مصفوفة الكائنات أشهر شكل للبيانات، و
JSONصيغتها لتبادل البيانات.
تحدٍّ برمجي: سلة المشتريات
متوسطلديك سلة مشتريات: مصفوفة كائنات، لكل كائن الاسم والسعر والكمية. اطبع كل صنف وإجمالي سعره، ثم المجموع الكلي.
- مر على السلة بحلقة for...of.
- لكل صنف اطبع: الاسم × الكمية = الإجمالي، مثل: قهوة ×
2 = 24 - في الأخير اطبع: المجموع: 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}`);