JavaScript / المصفوفات

المصفوفات: الفهرس و for...of و length معًا

اجمع بين رقم الترتيب و for...of و length في برنامج واحد، واعثر على أكبر قيمة وأصغر قيمة بنفسك. منهج البكالوريا

نبني برنامجًا يحسب خطوات المشي. عدد الخطوات = المسافة بالمتر ÷ طول الخطوة (0.7 متر)، ونقرّب الناتج بـ Math.round لأن عدد الخطوات عدد صحيح. نخزّن مسافات أسبوع في مصفوفة، يبدأ من يوم الاثنين:

اليومالاثنينالثلاثاءالأربعاءالخميسالجمعةالسبتالأحد
المسافة4500560024003800420067003600
رقم الترتيب0123456

ليوم واحد نستخدم رقم الترتيب: يوم الاثنين هو distanceList[0].

JavaScript
const distanceList = [4500, 5600, 2400, 3800, 4200, 6700, 3600];
const stepCount = Math.round(distanceList[0] / 0.7);
console.log(stepCount);
وحدة التحكم
6429

لكل الأيام نستخدم for...of، ونكتب distance مكان distanceList[0]. ثم للمتوسط نجمع المسافات ونقسم على length:

JavaScript
const distanceList = [4500, 5600, 2400, 3800, 4200, 6700, 3600];
let sum = 0;
for (const distance of distanceList) {
  sum = sum + distance;
}
console.log(sum);
console.log(sum / distanceList.length);
وحدة التحكم
30800
4400
sum تُعلن بـ let لأن قيمتها تتغير. وإذا كتبنا 7 بدل distanceList.length فسيصبح المتوسط خطأ عندما نضيف أيامًا جديدة.

أكبر قيمة وأصغر قيمة

كيف نجد أطول مسافة؟ نفترض أن القيمة الأولى هي الأكبر، ثم نمرّ على كل القيم: إذا وجدنا قيمة أكبر مما نحفظه، نحفظها بدلًا منه. وفي النهاية يبقى معنا الأكبر.

JavaScript
const distanceList = [4500, 5600, 2400, 3800, 4200, 6700, 3600];
let max = distanceList[0];
let min = distanceList[0];
for (const distance of distanceList) {
  if (distance > max) {
    max = distance;
  }
  if (distance < min) {
    min = distance;
  }
}
console.log("Longest: " + max);
console.log("Shortest: " + min);
وحدة التحكم
Longest: 6700
Shortest: 2400
ابدأ max وmin بالقيمة الأولى وليس بـ 0. لو بدأ min بـ 0 لما وجدنا قيمة أصغر منه، ولكانت النتيجة 0 وهي ليست في المصفوفة أصلًا.

وإذا أردنا أيّ يوم كانت فيه أطول مسافة نحتاج رقم الترتيب، فنعود إلى حلقة for بالعدّاد ونحفظ i:

JavaScript
const days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"];
const distanceList = [4500, 5600, 2400, 3800, 4200, 6700, 3600];
let best = 0;
for (let i = 1; i < distanceList.length; i++) {
  if (distanceList[i] > distanceList[best]) {
    best = i;
  }
}
console.log(days[best] + ": " + distanceList[best]);
وحدة التحكم
Sat: 6700

تدريبات

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

من السطر 2: عرّف الثابت stepCount ليساوي مسافة يوم الاثنين ÷ 0.7 مقرّبة بـ Math.round، ثم اطبعه.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
const distanceList = [4500, 5600, 2400, 3800, 4200, 6700, 3600];
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
2أكمل الفراغتدريب المنهج

أكمل الفراغ لحساب خطوات يوم السبت (المسافة 6700 ÷ 0.7، مقرّبة بـ Math.round) دون كتابة 6700 مباشرة.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
const distanceList = [4500, 5600, 2400, 3800, 4200, 6700, 3600];
const stepCount = ___;
console.log(stepCount);
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
3أكمل الفراغتدريب المنهج

أكمل الفراغين: استخدم for...of لتأخذ قيم distanceList في الثابت distance، فيطبع البرنامج خطوات كل يوم.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
const distanceList = [4500, 5600, 2400, 3800, 4200, 6700, 3600];

___ (___) {
  const stepCount = Math.round(distance / 0.7);
  console.log(stepCount);
}
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
4أكمل الفراغتدريب المنهج

أكمل الفراغ بحلقة for...of تأخذ قيم scoreList في الثابت score، فيطبع البرنامج مجموع الدرجات.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
const scoreList = [40, 55, 67, 52, 120];
let sum = 0;

for (___) {
  sum = sum + score;
}
console.log(sum);
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
5أكمل الفراغتدريب المنهج

أكمل الفراغ لطباعة المتوسط: المجموع ÷ عدد قيم scoreList. اكتبه بحيث يبقى صحيحًا لو تغيّر عدد القيم.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
const scoreList = [40, 55, 67, 52, 120];
let sum = 0;
for (const score of scoreList) {
  sum = sum + score;
}
console.log(___);
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
6اكتب البرنامجتدريب إضافي

درجات الحرارة في سانت كاترين خلال أسبوع شتوي. جد أقل درجة بحلقة (دون Math.min) واطبع Coldest: -4.

تلميحابدأ min بـ temps[0].
JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
const temps = [3, -1, 2, -4, 0, 1, 5];
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
7اكتب البرنامجتدريب إضافي

في المصفوفتين، الطالب رقم i اسمه names[i] ودرجته marks[i]. جد صاحب أعلى درجة واطبع Top: Salma with 97.

تلميحاحفظ رقم الترتيب best وليس الدرجة نفسها، ثم استخدمه مع المصفوفتين.
JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
const names = ["Omar", "Nour", "Salma", "Karim", "Hana"];
const marks = [88, 91, 97, 79, 94];
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.

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

  • قيمة واحدة: list[i]. كل القيم: for (const x of list). المتوسط: sum / list.length.
  • لأكبر قيمة: ابدأ بـ list[0] واستبدلها بأي قيمة أكبر داخل الحلقة؛ ولأصغر قيمة بالمثل مع <.
  • إذا احتجت مكان القيمة فاستخدم for بالعدّاد واحفظ i.