المصفوفات (Arrays) — JavaScript الأساسيات
المصفوفات (Arrays)
المصفوفات هي قوائم مرتبة من البيانات يمكنها تخزين أي نوع.
إنشاء المصفوفات
// طريقة الأقواس المربعة (الأفضل)
let fruits = ["تفاح", "موز", "برتقال"];
// مصفوفة فارغة
let empty = [];
// مصفوفة مختلطة
let mixed = [1, "نص", true, null, { name: "أحمد" }];
// باستخدام new Array
let numbers = new Array(1, 2, 3);
let sized = new Array(5); // مصفوفة بـ 5 عناصر فارغةالوصول للعناصر
let colors = ["أحمر", "أخضر", "أزرق"];
console.log(colors[0]); // أحمر (الأول)
console.log(colors[1]); // أخضر
console.log(colors[2]); // أزرق (الأخير)
console.log(colors[-1]); // undefined (خطأ شائع)
console.log(colors.at(-1)); // أزرق (ES2022)
console.log(colors.length); // 3
// تعديل عنصر
colors[1] = "أصفر";
console.log(colors); // ["أحمر", "أصفر", "أزرق"]دوال المصفوفات الأساسية
إضافة وحذف العناصر
let arr = [1, 2, 3];
// الإضافة
arr.push(4); // [1, 2, 3, 4] - في النهاية
arr.unshift(0); // [0, 1, 2, 3, 4] - في البداية
// الحذف
arr.pop(); // [0, 1, 2, 3] - من النهاية، يُرجع 4
arr.shift(); // [1, 2, 3] - من البداية، يُرجع 0
// splice - حذف/إضافة في أي موقع
arr.splice(1, 1); // [1, 3] - حذف عنصر واحد من الموقع 1
arr.splice(1, 0, 2); // [1, 2, 3] - إضافة 2 في الموقع 1
arr.splice(1, 1, 10, 20); // [1, 10, 20, 3] - استبدالالبحث
let fruits = ["تفاح", "موز", "برتقال", "موز"];
fruits.indexOf("موز"); // 1 (أول ظهور)
fruits.lastIndexOf("موز"); // 3 (آخر ظهور)
fruits.includes("تفاح"); // true
fruits.includes("عنب"); // false
// find - البحث بشرط
let numbers = [1, 5, 10, 15, 20];
let found = numbers.find(n => n > 8);
console.log(found); // 10
// findIndex - موقع العنصر
let index = numbers.findIndex(n => n > 8);
console.log(index); // 2التحويل
let arr = [1, 2, 3];
// نسخ سطحية
let copy = arr.slice();
let partial = arr.slice(1, 2); // [2]
// الدمج
let arr2 = [4, 5];
let combined = arr.concat(arr2); // [1, 2, 3, 4, 5]
// Spread Operator (أفضل)
let combined2 = [...arr, ...arr2]; // [1, 2, 3, 4, 5]
// join - تحويل لنص
let text = arr.join("-"); // "1-2-3"
// split - نص لمصفوفة
let words = "مرحباً بالعالم".split(" "); // ["مرحباً", "بالعالم"]دوال المصفوفات المتقدمة ⭐
forEach - التكرار
let fruits = ["تفاح", "موز", "برتقال"];
fruits.forEach((fruit, index) => {
console.log(`${index + 1}. ${fruit}`);
});
// 1. تفاح
// 2. موز
// 3. برتقالmap - التحويل
let numbers = [1, 2, 3, 4, 5];
let doubled = numbers.map(n => n * 2);
console.log(doubled); // [2, 4, 6, 8, 10]
let names = ["أحمد", "محمد", "علي"];
let greetings = names.map(name => `مرحباً ${name}`);filter - الفلترة
let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let evens = numbers.filter(n => n % 2 === 0);
console.log(evens); // [2, 4, 6, 8, 10]
let bigNumbers = numbers.filter(n => n > 5);
console.log(bigNumbers); // [6, 7, 8, 9, 10]reduce - التجميع
let numbers = [1, 2, 3, 4, 5];
// المجموع
let sum = numbers.reduce((acc, curr) => acc + curr, 0);
console.log(sum); // 15
// أكبر عدد
let max = numbers.reduce((max, n) => n > max ? n : max, numbers[0]);
// تحويل لكائن
let fruits = ["تفاح", "موز", "تفاح", "برتقال", "موز", "موز"];
let count = fruits.reduce((obj, fruit) => {
obj[fruit] = (obj[fruit] || 0) + 1;
return obj;
}, {});
console.log(count); // { تفاح: 2, موز: 3, برتقال: 1 }sort - الترتيب
let numbers = [3, 1, 4, 1, 5, 9, 2, 6];
// ترتيب تصاعدي
numbers.sort((a, b) => a - b);
console.log(numbers); // [1, 1, 2, 3, 4, 5, 6, 9]
// ترتيب تنازلي
numbers.sort((a, b) => b - a);
// ترتيب النصوص
let names = ["علي", "أحمد", "محمد"];
names.sort(); // ترتيب أبجديالسلسلة (Chaining)
let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let result = numbers
.filter(n => n % 2 === 0) // الأرقام الزوجية
.map(n => n * 2) // ضرب في 2
.reduce((sum, n) => sum + n, 0); // المجموع
console.log(result); // 60 (4 + 8 + 12 + 16 + 20)// إنشاء مصفوفة
let fruits = ["تفاح", "موز", "برتقال"];
console.log("الفواكه:", fruits);
// إضافة وحذف
fruits.push("عنب");
console.log("بعد الإضافة:", fruits);
// map - تحويل
let numbers = [1, 2, 3, 4, 5];
let squared = numbers.map(n => n ** 2);
console.log("المربعات:", squared);
// filter - فلترة
let evens = numbers.filter(n => n % 2 === 0);
console.log("الأزواج:", evens);
// reduce - تجميع
let sum = numbers.reduce((a, b) => a + b, 0);
console.log("المجموع:", sum);اختبر فهمك