٣.٩ ملخص¶
المصفوفات¶
المصفوفة قائمة عناصر تُكتب بين []، ويمكن أن تضم أنواع بيانات مختلفة.
var arr1 = [1, 2, 3];
var arr2 = [false, 1, "hello"];
var arr3 = ["a", "b", "c", "d"];
نصل إلى عنصر بكتابة فهرسه بين قوسين مربعين. يبدأ الفهرس من 0، ثم 1، ثم 2، وهكذا.
var colors = ["red", "white", "green"];
console.log(colors[0]); //red
console.log(colors[1]); //white
console.log(colors[2]); //green
array.length تُرجع طول المصفوفة.
var arr1 = [1, 2, 3];
console.log(arr1.length); //3
تعديل المصفوفات¶
إضافة عناصر إلى مصفوفة¶
array.push(item) تضيف عنصرًا إلى نهاية المصفوفة.
array.unshift(item) تضيف عنصرًا إلى بداية المصفوفة.
استخدم array[position]=value لإضافة عنصر عند فهرس محدّد.
var arr = [1, 2, 3, 4];
arr.push(5); //[1, 2, 3, 4, 5]
arr.unshift(0); //[0, 1, 2, 3, 4, 5]
arr[6] = 6; //[0, 1, 2, 3, 4, 5, 6]
حذف عناصر من مصفوفة¶
array.pop() تحذف آخر عنصر من المصفوفة.
array.shift() تحذف أول عنصر من المصفوفة.
var arr = [1, 2, 3, 4];
arr.pop(); //[1, 2, 3]
arr.shift(0); //[2, 3]
عرض عناصر المصفوفة¶
يمكن عرض عناصر المصفوفة باستخدام:
for.for...of.forEach()وهي طريقة مساعدة للمصفوفات.
var colors = ["red", "green", "white", "black"];
//for loop
for(var i =0; i < colors.length; i++){
console.log(colors[i]);
}
//for...of
for(color of colors){
console.log(color);
}
//forEach helper
colors.forEach(function(current){
console.log(current);
});
الدوال المساعدة للمصفوفات¶
map()¶
باستخدام array.map()يمكن إنشاء مصفوفة جديدة دون تعديل الأصلية في هذا المثال.
array.map() تستقبل دالة وتُرجع مصفوفة جديدة.
تستقبل الدالة ثلاثة معاملات كحد أقصى:
currentValue: العنصر الحالي، وهو المعامل المستخدم هنا.index: فهرس العنصر الحالي، ويمكن إغفاله.array: المصفوفة نفسها، ويمكن إغفالها.
مثال:
var numbers = [1, 2, 3];
var result = numbers.map(num => num + 1);
//[2, 3, 4]
filter()¶
باستخدام array.filter()يمكن إنشاء مصفوفة جديدة تضم العناصر التي تحقق شرط الدالة، دون تغيير الأصلية.
array.filter() تستقبل دالة وتُرجع مصفوفة جديدة.
تستقبل الدالة ثلاثة معاملات كحد أقصى:
currentValue: العنصر الحالي، وهو المعامل المستخدم هنا.index: فهرس العنصر الحالي، ويمكن إغفاله.array: المصفوفة نفسها، ويمكن إغفالها.
مثال:
var numbers = [1, 2, 3];
var result = numbers.filter(num => num >= 2);
//[2, 3]
every()¶
باستخدام array.every()يمكننا التحقّق مما إذا كانت جميع عناصر المصفوفة تحقق شرطًا معيّنًا.
array.every() تستقبل دالة وتُرجع true أو false.
تستقبل الدالة ثلاثة معاملات كحد أقصى:
currentValue: العنصر الحالي، وهو المعامل المستخدم هنا.index: فهرس العنصر الحالي، ويمكن إغفاله.array: المصفوفة نفسها، ويمكن إغفالها.
مثال:
var numbers = [1, 2, 3];
var result = numbers.every(num => num > 0);
//true
some()¶
باستخدام array.some()يمكننا التحقّق مما إذا كانت عنصر واحد على الأقل من المصفوفة يحقق شرطًا محدّدًا.
array.some() تستقبل دالة وتُرجع true أو false.
تستقبل الدالة ثلاثة معاملات كحد أقصى:
currentValue: العنصر الحالي، وهو المعامل المستخدم هنا.index: فهرس العنصر الحالي، ويمكن إغفاله.array: المصفوفة نفسها، ويمكن إغفالها.
مثال:
var numbers = [1, 2, 3];
var result = numbers.some(num => num < 0);
//false
find()¶
باستخدام array.find()يمكننا استرجاع أول عنصر يحقق الشرط.
array.find() تستقبل دالة وتُرجع قيمة أول عنصر يحقق الشرط.
تستقبل الدالة ثلاثة معاملات كحد أقصى:
currentValue: العنصر الحالي، وهو المعامل المستخدم هنا.index: فهرس العنصر الحالي، ويمكن إغفاله.array: المصفوفة نفسها، ويمكن إغفالها.
مثال:
var numbers = [1, 2, 3];
var result = numbers.find(num => num > 0);
//1
reduce()¶
باستخدام array.reduce()يمكننا اختزال المصفوفة إلى قيمة واحدة.
array.reduce() تستقبل دالة وقيمة ابتدائية اختيارية، وتُرجع النتيجة النهائية للتجميع.
تستقبل الدالة أربعة معاملات كحد أقصى:
previousValue: القيمة التراكمية المُرجعة من الاستدعاء السابق، وهي مستخدمة هنا.currentValue: العنصر الحالي، وهو المعامل المستخدم هنا.index: فهرس العنصر الحالي، ويمكن إغفاله.array: المصفوفة نفسها، ويمكن إغفالها.
مثال:
var numbers = [1, 2, 3];
var result = numbers.reduce((sum, val) => sum + val);
//6
عامل النشر (Spread)¶
يفكّ عامل النشر ... عناصر المصفوفة إلى قيم منفردة.
استخدامات عامل النشر:
- دمج المصفوفات.
- إنشاء نسخ سطحية من المصفوفات.
- تمرير عناصر المصفوفة إلى الدوال الرياضية
أمثلة:
//combine two arrays
var arr1 = [1, 2, 3];
var arr2 = [4, 5, 6];
var arr1arr2 = [...arr1, ...arr2]; //[1, 2, 3, 4, 5, 6]
//copying an array
var arr3 = [1, 2];
var arr4 = [...arr3]; // [1, 2]
//in math functions
var arr5 = [5, 6, 7];
var arr5Min = Math.min(...arr5); //5
var arr5Max = Math.max(...arr5); //7
طرائق مفيدة للمصفوفات¶
isArray()¶
Array.isArray(arr) تُرجع true إذا كانت arr مصفوفة؛ وإلا تُرجع false.
مثال:
var numbers = [1, 2, 3];
var result = Array.isArray(numbers); //true
reverse()¶
arr.reverse() تعكس ترتيب عناصر المصفوفة arr. arr.reverse() وتُعدّل المصفوفة الأصلية.
مثال:
var numbers = [1, 2, 3];
numbers.reverse(); //[3, 2, 1]
sort()¶
arr.sort() تُرجع المصفوفة بعد ترتيبها. arr.sort() وتُعدّل المصفوفة الأصلية.
مثال:
var numbers = [5, 7, 4, 1];
numbers.sort(); //[1, 4, 5, 7]