💡 ما هي أنواع البيانات المركبة؟
الأنواع المركبة (Complex Types) تسمى أيضًا أنواع المرجع (Reference Types) لأنها تخزن مرجعًا إلى القيمة في الذاكرة، وليس القيمة نفسها. في JavaScript، الأنواع المركبة تشمل:
let obj = {name: "أحمد", age: 25};
let arr = [1, 2, 3, 4, 5];
let func = function() { return "مرحباً" };
let date = new Date();
let regex = /[a-z]+/gi;
let map = new Map();
let set = new Set();
📊 المصفوفات (Arrays) - بالتفصيل
المصفوفات هي نوع خاص من الكائنات تستخدم لتخزين قوائم مرتبة من القيم. يمكن للمصفوفة تخزين أي نوع من البيانات، بما في ذلك الأنواع المركبة الأخرى.
إنشاء المصفوفات:
let fruits1 = ["تفاح", "موز", "برتقال"];
let fruits2 = new Array("تفاح", "موز", "برتقال");
let emptyArray = [];
let mixedArray = [1, "نص", true, {name: "قيمة"}, [1,2]];
خصائص وطرق المصفوفات:
let arr = [10, 20, 30, 40];
console.log(arr.length);
arr.push(50);
arr.unshift(0);
arr.pop();
arr.shift();
console.log(arr[0]);
console.log(arr[arr.length-1]);
طرق مهمة للمصفوفات:
let numbers = [5, 2, 8, 1, 9];
numbers.forEach(num => console.log(num));
let doubled = numbers.map(num => num * 2);
let filtered = numbers.filter(num => num > 5);
let found = numbers.find(num => num === 8);
numbers.sort();
⚖️ الفرق بين تمرير القيمة وتمرير المرجع
هذا هو الفرق الأساسي بين الأنواع الأولية والمركبة:
let a = 10;
let b = a;
a = 20;
console.log(b);
let obj1 = {x: 10};
let obj2 = obj1;
obj1.x = 20;
console.log(obj2.x);
let arr1 = [1, 2, 3];
let arr2 = arr1;
arr1[0] = 99;
console.log(arr2[0]);
📋 كيفية نسخ المصفوفات والكائنات (لتجنب مشاركة المرجع)
let original = [1, 2, 3];
let copy1 = [...original];
let copy2 = original.slice();
let copy3 = Array.from(original);
let copy4 = [].concat(original);
let deepCopy = JSON.parse(JSON.stringify(original));