JSON المتداخل
جزء من قسم Logic & Flow في رحلة JavaScript على Coddy — الدرس 23 من 65.
يمكن لكائن JSON أن يحتوي على كائن JSON آخر بداخله. يمكن أن يكون متداخلاً بشكل لا نهائي. على سبيل المثال:
const userData = {
"user": {
"name": "Kim",
"address": {
"city": "Springfield",
"zip": 12345,
"location": {
"coordinates": {
"latitude": 42.1234,
"longitude": -71.5678
}
}
}
}
}للوصول إلى مفتاح متداخل، سنكتب:
userData.user.name
userData.user.address.location
// وهكذاالتحدي
سهلقم بإنشاء دالة تسمى calculateRestaurantBill تأخذ كائن JSON يمثل طلب مطعم كمدخل. كل مفتاح في الكائن هو اسم طبق، وكل قيمة هي كائن آخر يحتوي على:
- price (رقم)
- quantity (رقم)
- isSpecialOffer (قيمة منطقية)
إذا كانت القيمة true، فهناك خصم بنسبة 20% على ذلك الطبق. يجب على الدالة:
- حساب إجمالي الفاتورة
- تطبيق أي خصومات للعروض الخاصة
يحتوي الكائن المرتجع على:
- totalBeforeDiscount
- totalDiscount
- finalTotal
(يتم تقريب جميع القيم إلى منزلتين عشريتين)
ورقة مرجعية
يمكن أن تكون كائنات JSON متداخلة إلى ما لا نهاية:
const userData = {
"user": {
"name": "Kim",
"address": {
"city": "Springfield",
"zip": 12345,
"location": {
"coordinates": {
"latitude": 42.1234,
"longitude": -71.5678
}
}
}
}
}الوصول إلى الخصائص المتداخلة باستخدام تدوين النقطة (dot notation):
userData.user.name
userData.user.address.location
// وهكذاجرّب بنفسك
function calculateRestaurantBill(order) {
// اكتب الكود هنا
return {
totalBeforeDiscount: Number(totalBeforeDiscount.toFixed(2)),
totalDiscount: Number(totalDiscount.toFixed(2)),
finalTotal: Number(finalTotal.toFixed(2))
};
}
// لا تكتب أي شيء خارج الدالةيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1السلاسل النصية بعمق
أساسيات السلاسل النصيةالتكرار عبر السلاسل النصيةTemplate Literalsدوال السلاسل النصيةمراجعة - String Weaver4JSON الجزء الثاني
التكرار عبر JSONJSON المتداخلالتسلسل الاختياري في JSONالنسخ السطحي والعميقمراجعة - متجر الدراجاتمراجعة - النظام الشمسي2المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفات ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادمراجعة - المصفوفات ثنائية الأبعادجمع وطرح المصفوفاتالمصفوفات المتعرجة (Jagged Arrays)المصفوفات ثلاثية الأبعاد وما بعدهاأنماط المصفوفات ثنائية الأبعاد الشائعةمراجعة - كل شيء عن المصفوفات5المجموعات - الجزء الأول
ما هي المجموعة؟التكرار عبر المجموعاتإضافة عنصرإزالة عنصرالتحقق من وجود عنصرالحجم وهل هي فارغةالنسخ والمسحملخص - أساسيات المجموعات8مواضيع شيقة حول الـ Arrays
تفكيك الـ Arrayاستخدام الـ Spread Syntax في الـ Arraysالـ Sparse Arraysمراجعة - ورشة عمل الـ Arrays3JSON الجزء الأول
ما هو JSON؟التحقق من وجود المفتاحObject MethodsSpread Operator الجزء الأولSpread Operator الجزء الثانيحذف المفاتيحمراجعة - معالجة مفاتيح JSON