JavaScript / المصفوفات

المصفوفات مع التكرار و for...of

مرّ على كل قيم المصفوفة بحلقة for أو for...of، واحسب المجموع والمتوسط وعدد القيم التي تحقق شرطًا. منهج البكالوريا

لطباعة كل قيم مصفوفة طويلة لا نكتب سطرًا لكل قيمة. نستخدم حلقة for ونجعل العدّاد i هو رقم الترتيب: يبدأ من 0 ويتوقف قبل length.

JavaScript
let degreeList = [2, 1, 2, 1, 0];
for (let i = 0; i < degreeList.length; i++) {
  console.log(degreeList[i]);
}
وحدة التحكم
2
1
2
1
0
اكتب i < list.length وليس i <= list.length؛ فآخر رقم ترتيب هو length - 1. واستخدام length بدل كتابة العدد يجعل البرنامج يعمل مهما تغيّر عدد القيم.

المجموع والمتوسط والعدّ

للمجموع نبدأ بمتغير قيمته 0 ونضيف إليه كل قيمة داخل الحلقة. وبعد الحلقة نقسم المجموع على length لنحصل على المتوسط:

JavaScript
let runLogs = [5, 2, 4, 1, 3, 3];
let total = 0;
for (let i = 0; i < runLogs.length; i++) {
  total = total + runLogs[i];
}
console.log(total);
console.log(total / runLogs.length);
وحدة التحكم
18
3

وبوضع if داخل الحلقة نفحص كل قيمة. هنا نعدّ الدرجات التي تساوي 80 أو أكثر، ونطبع العدد بعد الحلقة:

JavaScript
let scoreList = [52, 90, 70, 83, 63, 72, 89];
let count = 0;
for (let i = 0; i < scoreList.length; i++) {
  if (scoreList[i] >= 80) {
    count = count + 1;
  }
}
console.log("80 or more: " + count);
وحدة التحكم
80 or more: 3

حلقة for...of

إذا كنا نحتاج القيم فقط ولا يهمنا رقم الترتيب، فهناك طريقة أقصر: for...of تأخذ قيم المصفوفة واحدة واحدة بالترتيب وتضعها في متغير، دون عدّاد ولا length.

JavaScript
let degreeList = [8, 6, 11, 10];
for (let degree of degreeList) {
  console.log(degree);
}
وحدة التحكم
8
6
11
10

مثال: في سحب على تذاكر، الرقم الفائز هو الذي يقبل القسمة على 7 (باقي القسمة 0). نفحص كل تذكرة ونطبع الفائزة فقط:

JavaScript
const numList = [128, 254, 581, 12, 783, 49, 429];
for (const num of numList) {
  if (num % 7 == 0) {
    console.log(num);
  }
}
وحدة التحكم
581
49
في for...of المتغير يحمل القيمة نفسها وليس رقم ترتيبها؛ فلا تكتب numList[num]. ويمكن تعريفه بـ const لأنه يُنشأ من جديد في كل دورة، أما i في for العادية فلا بد من let لأنها تتغير.

تدريبات

1أكمل الفراغتدريب المنهج

أكمل الفراغين باستخدام tempList.length بدل كتابة العدد 14، ليطبع البرنامج متوسط درجات الحرارة.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
let tempList = [36.0, 36.5, 37.0, 36.5, 36.0, 37.0, 36.5, 36.5, 37.0, 36.0, 36.5, 37.0, 36.5, 36.0];
let sum = 0;
for (let i = 0; i < ___; i++) {
  sum = sum + tempList[i];
}
console.log(sum / ___);
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
2اكتب البرنامجتدريب المنهج

بحلقة for تتكرر بعدد قيم scoreList، اطبع Pass لكل درجة أكبر من أو تساوي 80.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
let scoreList = [52, 90, 70, 83, 63, 72, 89];
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
3اكتب البرنامجتدريب المنهج

أنشئ المصفوفة wordList بالقيم "apple" و"banana" و"orange"، ثم اطبع كل قيمة في سطر باستخدام for...of والمتغير word.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
4أكمل الفراغتدريب المنهج

أكمل الشرط ليطبع البرنامج أرقام التذاكر التي تقبل القسمة على 7 فقط.

تلميحباقي القسمة % على 7 يجب أن يساوي 0.
JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
const numList = [128, 254, 458, 547, 125, 305, 581, 12, 783, 429];

for (const num of numList) {
  if (___) {
    console.log(num);
  }
}
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
5عدّل البرنامجتدريب المنهج

البرنامج يطبع القيم بحلقة for بالعدّاد. أعد كتابته باستخدام for...of والمتغير num، واجعل كل سطر بالشكل Number 2 ثم Number 4 وهكذا.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
const numList = [2, 4, 6, 8];
for (let i = 0; i < numList.length; i++) {
  console.log(numList[i]);
}
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
6اكتب البرنامجتدريب إضافي

هذا ما صرفه طالب من مصروفه في 7 أيام. بحلقة for...of احسب المجموع، ثم اطبع Total: 140 ثم Average: 20 (المتوسط = المجموع ÷ length).

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
const spent = [15, 20, 10, 25, 30, 20, 20];
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
7اكتب البرنامجتدريب إضافي

سجل الحضور: "P" حاضر و"A" غائب. عُدّ أيام الغياب بحلقة for...of واطبع Absent days: 3.

تلميحابدأ عدّادًا من 0 وزِده داخل if، واطبعه بعد الحلقة.
JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
const attendance = ["P", "A", "P", "P", "A", "P", "A", "P"];
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.

النقاط الرئيسية

  • for (let i = 0; i < list.length; i++) مع list[i] تمرّ على كل القيم بأرقام ترتيبها.
  • for (const x of list) تعطيك القيم نفسها بالترتيب، دون عدّاد.
  • المجموع يبدأ من 0 ويُضاف إليه داخل الحلقة، والمتوسط sum / list.length بعدها.