المسارات
/
JavaScript
JavaScript
/
التمارين
/
تعويذات إليس التكرارية
تعويذات إليس التكرارية

تعويذات إليس التكرارية

تمرين تعلّمي

مقدمة

عند العمل مع المصفوفات، قد ترغب أحيانًا في تنفيذ كود لكل قيمة في المصفوفة. ويُسمّى هذا التكرار على المصفوفة أو الدوران عليها.

سننظر هنا في الحالة التي لا ترغب فيها بتعديل المصفوفة أثناء ذلك. أما لتحويل المصفوفات، فراجع مفهوم تحويلات المصفوفات بدلًا من ذلك.

حلقة for

أبسط أسلوب للتكرار على مصفوفة هو استخدام حلقة for، انظر مفهوم حلقات for.

const numbers = [6.0221515, 10, 23];

for (let i = 0; i < numbers.length; i++) {
  console.log(numbers[i]);
}
// => 6.0221515
// => 10
// => 23

حلقة for...of

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

تعمل حلقة for...of مثل حلقة for الأساسية الموضّحة أعلاه، لكن بدلًا من التعامل مع الفهرس كمتغير في الحلقة، تُمنح القيمة مباشرة.

const numbers = [6.0221515, 10, 23];

// Because re-assigning number inside the loop will be very
// confusing, disallowing that via const is preferable.
for (const number of numbers) {
  console.log(number);
}
// => 6.0221515
// => 10
// => 23

وكما في حلقات for العادية، يمكنك استخدام continue لإيقاف التكرار الحالي وbreak لإيقاف تنفيذ الحلقة تمامًا.

طريقة forEach

تتضمن كل مصفوفة طريقة forEach يمكن استخدامها للمرور على عناصر المصفوفة.

تقبل forEach دالة استدعاء راجعة كمعامل. تُستدعى دالة الاستدعاء الراجعة مرة واحدة لكل عنصر في المصفوفة. ويُمرَّر إلى الدالة العنصر الحالي وفهرسه والمصفوفة كاملة كوسائط. وغالبًا ما يُستخدم العنصر الحالي أو الفهرس فقط.

const numbers = [6.0221515, 10, 23];

numbers.forEach((number, index) => console.log(number, index));
// => 6.0221515 0
// => 10 1
// => 23 2

لا يمكنك إيقاف التكرار بعد بدء حلقة forEach. ولا وجود للعبارتين break وcontinue في هذا السياق.

التعليمات

بصفتها ساحرة ناشئة، تحتاج Elyse إلى تحليل مجموعة أوراقها بطرق مختلفة عديدة. ولتبسيط الأمور، لا تستخدم إلا أوراقًا تحمل القيم من 1 إلى 10.

1. حدّد عدد الأوراق من نوع معيّن في المجموعة

تريد Elyse أن تعرف عدد الأوراق التي لديها من نوع معيّن في مجموعتها.

اكتب دالة cardTypeCheck تأخذ معاملين: مصفوفة أوراق (مجموعة Elyse) ونوع الورقة المطلوب عدّها.

Note

ينبغي أن تستخدم الدالة forEach وأن تُرجع عدد الأوراق من النوع المحدّد في المجموعة.

const cardType = 3;
cardTypeCheck([1, 2, 3, 4], cardType);
// => 1

2. حدّد عدد الأوراق الفردية أو الزوجية

من أجل حيلة أخرى، تحتاج Elyse إلى معرفة عدد الأوراق الفردية أو الزوجية في مجموعتها.

نفّذ دالة determineOddEvenCards تأخذ معاملين: مصفوفة أوراق (مجموعة Elyse)، وقيمة منطقية (صحيح تقابل "الزوجي"، وخطأ تقابل "الفردي").

ينبغي أن تُرجع هذه الدالة عددًا واحدًا: عدد الأوراق الفردية أو الزوجية (بناءً على قيمة الوسيط الثاني) في المجموعة.

Note

للتدريب، استخدم هذه المرة حلقة for...of في تنفيذ الدالة.

determineOddEvenCards([1, 2, 3, 1, 5, 6], true);
// => 2

determineOddEvenCards([1, 2, 3, 1, 5, 6], false);
// => 4
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
JavaScript Exercism

مستعد لبدء تعويذات إليس التكرارية؟

سجّل في Exercism لتتعلّم وتتقن JavaScript عبر 37 مفهومًا159 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.