امتحان JS 4: المصفوفات، الكائنات، و ES6+ (10 تمارين مركبة)
امتحان JS 4: المصفوفات والكائنات المتقدمة
اختبر مهاراتك في ميزات JavaScript الحديثة (ES6+)، بما في ذلك التعامل المتقدم مع البيانات والدوال المختصرة.
تمرين 1
الدوال السهمية (Arrow Functions)
حول الدالة التقليدية التالية إلى دالة سهمية:
- الدالة: `function add(a, b) { return a + b; }`
- اكتبها كدالة سهمية `const add = ...`
- اختصرها لتكون في سطر واحد (Implicit Return).
الحل
const add = (a, b) => a + b;
تمرين 2
دالة الخريطة (Map)
لديك مصفوفة أرقام `[1, 2, 3]`:
- استخدم `map` لإنشاء مصفوفة جديدة تحتوي على مربع كل رقم (الرقم مضروب في نفسه).
- النتيجة المتوقعة: `[1, 4, 9]`.
الحل
const numbers = [1, 2, 3];
const squared = numbers.map(num => num * num);
console.log(squared);
تمرين 3
دالة التصفية (Filter)
لديك مصفوفة أعمار `[15, 22, 18, 10, 30]`:
- استخدم `filter` لإنشاء مصفوفة جديدة تحتوي فقط على البالغين (أكبر من أو يساوي 18).
الحل
const ages = [15, 22, 18, 10, 30];
const adults = ages.filter(age => age >= 18);
console.log(adults); // [22, 18, 30]
تمرين 4
تفكيك الكائنات (Object Destructuring)
لديك كائن `user = { name: "Ali", email: "ali@test.com" }`:
- استخرج `name` و `email` في متغيرات مستقلة باستخدام Destructuring.
- اطبع المتغيرات الجديدة.
الحل
const user = { name: "Ali", email: "ali@test.com" };
const { name, email } = user;
console.log(name, email);
تمرين 5
معامل الانتشار (Spread Operator)
ادمج مصفوفتين:
- المصفوفة الأولى `arr1 = [1, 2]`.
- المصفوفة الثانية `arr2 = [3, 4]`.
- أنشئ `arr3` تحتوي على عناصر المصفوفتين باستخدام `...` (Spread).
الحل
const arr1 = [1, 2];
const arr2 = [3, 4];
const arr3 = [...arr1, ...arr2];
console.log(arr3); // [1, 2, 3, 4]
تمرين 6
دالة البحث (Find)
ابحث عن عنصر في مصفوفة كائنات:
- لديك مصفوفة مستخدمين `users = [{id: 1, name: "A"}, {id: 2, name: "B"}]`.
- استخدم `find` للحصول على المستخدم الذي يحمل `id` رقم 2.
الحل
const users = [{id: 1, name: "A"}, {id: 2, name: "B"}];
const user = users.find(u => u.id === 2);
console.log(user); // {id: 2, name: "B"}
تمرين 7
المعاملات الافتراضية (Default Parameters)
أنشئ دالة ترحيب:
- الدالة `greet(name)` تطبع "Hello, [name]".
- اجعل المعامل `name` يأخذ قيمة افتراضية "Guest" إذا لم يتم تمريره.
- جرب استدعاء الدالة بدون وسائط.
الحل
function greet(name = "Guest") {
console.log(`Hello, ${name}`);
}
greet(); // Hello, Guest
تمرين 8
دالة التقليص (Reduce)
احسب مجموع الأرقام:
- لديك مصفوفة `prices = [10, 20, 30]`.
- استخدم `reduce` لحساب المجموع الكلي للعناصر.
الحل
const prices = [10, 20, 30];
const total = prices.reduce((sum, price) => sum + price, 0);
console.log(total); // 60
تمرين 9
تفكيك المصفوفات (Array Destructuring)
استخرج القيم من مصفوفة:
- لديك مصفوفة `coords = [10, 20]`.
- استخرج القيمتين في متغيرين `x` و `y` باستخدام Destructuring.
الحل
const coords = [10, 20];
const [x, y] = coords;
console.log(x, y);
تمرين 10
الكائنات الحرفية المحسنة (Enhanced Object Literals)
أنشئ كائناً بطريقة مختصرة:
- لديك متغيرات `name = "Sara"` و `age = 25`.
- أنشئ كائناً `person` يحتوي على هذه الخصائص دون تكرار الأسماء (Shorthand Property Names).
الحل
const name = "Sara";
const age = 25;
const person = { name, age }; // بدلاً من { name: name, age: age }
console.log(person);