124 lines
5.2 KiB
Markdown
124 lines
5.2 KiB
Markdown
![]() |
---
|
|||
|
title: Selecting from Many Options with Switch Statements
|
|||
|
localeTitle: اختيار من العديد من الخيارات مع تبديل البيانات
|
|||
|
---
|
|||
|
## اختيار من العديد من الخيارات مع تبديل البيانات
|
|||
|
|
|||
|
_إذا كان لديك العديد من الخيارات للاختيار من بينها ، فاستخدم عبارة `switch` . يختبر بيان `switch` قيمة ويمكن أن يحتوي على العديد من عبارات `case` التي تحدد القيم المحتملة المختلفة. يتم تنفيذ البيانات من قيمة `case` الأولى المتطابقة حتى تتم مواجهة `break` ._
|
|||
|
|
|||
|
_في ما يلي مثال pseudocode:_
|
|||
|
|
|||
|
` switch(num) {
|
|||
|
case value1:
|
|||
|
statement1;
|
|||
|
break;
|
|||
|
case value2:
|
|||
|
statement2;
|
|||
|
break;
|
|||
|
...
|
|||
|
case valueN:
|
|||
|
statementN;
|
|||
|
break;
|
|||
|
}
|
|||
|
`
|
|||
|
|
|||
|
### أكثر قليلا من الشرح
|
|||
|
|
|||
|
يقوم بيان التبديل أولاً بتقييم التعبير الخاص به. ثم يبحث عن جملة `case` الأولى التي يتم تقييم التعبير لها بنفس القيمة الناتجة عن تعبير الإدخال (باستخدام [المقارنة الصارمة](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators) ، ( `===` ) وينقل التحكم إلى ذلك البند ، تنفيذ العبارات المرتبطة. (إذا كانت هناك حالات متعددة تتطابق القيمة المقدمة ، يتم تحديد الحالة الأولى المطابقة ، حتى إذا كانت الحالات لا تساوي بعضها البعض.)
|
|||
|
|
|||
|
إذا لم يتم العثور على فقرة `case` مطابقة ، يبحث البرنامج عن جملة `default` اختيارية ، وإذا تم العثور عليه ، ينقل التحكّم إلى هذا البند ، وينفذ البيانات المرتبطة. إذا لم يتم العثور على جملة `default` ، يتابع البرنامج التنفيذ في البيان التالي لنهاية `switch` . حسب الاصطلاح ، فإن الجملة `default` هي الجملة الأخيرة ، ولكنها لا تحتاج إلى أن تكون كذلك.
|
|||
|
|
|||
|
يضمن بيان `break` الاختياري المرتبط بكل ملصق حالة أن البرنامج يخرج من المفتاح بمجرد تنفيذ البيان المطابق ومواصلة التنفيذ في البيان التالي للتبديل. إذا تم حذف `break` ، يستمر البرنامج في التنفيذ في العبارة التالية في عبارة `switch` . [1](#cite1)
|
|||
|
|
|||
|
### شرح المشكلة:
|
|||
|
|
|||
|
_اكتب عبارة التبديل التي تختبر `val` `answer` عن الشروط التالية:_
|
|||
|
|
|||
|
* `1` - "ألفا" ،
|
|||
|
* `2` - "beta" ،
|
|||
|
* `3` - "جاما" ،
|
|||
|
* `4` - "دلتا".
|
|||
|
|
|||
|
## تلميح 1
|
|||
|
|
|||
|
تذكر أن قيم `case` يتم اختبارها بالمساواة الصارمة ( `===` ).
|
|||
|
|
|||
|
> حاول حل المشكلة الآن!
|
|||
|
|
|||
|
## تلميح 2
|
|||
|
|
|||
|
لا تشاهد _"الشروط التالية"_ كقائمة مرتبة كما تبدو في العرض التوضيحي freeCodeCamp الأصلي ، ولكن كقيم وعبارات ، كما هو موضح هنا
|
|||
|
|
|||
|
> حاول حل المشكلة الآن!
|
|||
|
|
|||
|
## تنبيه المفسد!
|
|||
|
|
|||
|
### هل أنت متأكد تماما ما تريد نظرة؟ ...
|
|||
|
|
|||
|
## حل الرمز الأساسي
|
|||
|
|
|||
|
`function caseInSwitch(val) {
|
|||
|
var answer = "";
|
|||
|
// Only change code below this line
|
|||
|
switch(val) {
|
|||
|
case 1:
|
|||
|
return "alpha";
|
|||
|
break;
|
|||
|
case 2:
|
|||
|
return "beta";
|
|||
|
break;
|
|||
|
case 3:
|
|||
|
return "gamma";
|
|||
|
break;
|
|||
|
case 4:
|
|||
|
return "delta";
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
// Only change code above this line
|
|||
|
return answer;
|
|||
|
}
|
|||
|
|
|||
|
// Change this value to test
|
|||
|
caseInSwitch(1);
|
|||
|
`
|
|||
|
|
|||
|
### شرح الشفرة
|
|||
|
|
|||
|
من الشائع تجاهل أن قيم `case` يتم اختبارها بالمساواة الصارمة مع أي حاجة للتعبير الآخر ، مثل: `case === value`
|
|||
|
|
|||
|
## حل رمز بديل:
|
|||
|
|
|||
|
`function caseInSwitch(val) {
|
|||
|
var answer = "";
|
|||
|
// Only change code below this line
|
|||
|
switch (val){
|
|||
|
case 1:
|
|||
|
answer="alpha";
|
|||
|
break;
|
|||
|
case 2:
|
|||
|
answer="beta";
|
|||
|
break;
|
|||
|
case 3:
|
|||
|
answer="gamma";
|
|||
|
break;
|
|||
|
case 4:
|
|||
|
answer="delta";
|
|||
|
break;
|
|||
|
}
|
|||
|
// Only change code above this line
|
|||
|
return answer;
|
|||
|
}
|
|||
|
// Change this value to test
|
|||
|
caseInSwitch(1);
|
|||
|
`
|
|||
|
|
|||
|
تشغيل الكود في [repl.it.](https://repl.it/@AdrianSkar/Basic-JS-Switch-statements)
|
|||
|
|
|||
|
### تفسير الشفرة
|
|||
|
|
|||
|
نظرًا لأن لديك بالفعل متغيرًا محددًا في بداية الدالة المسمى `answer` ، ويتم تعريفه على أنه آخر كشف للإرجاع ، فيمكنك تعيين قيم جديدة له لكل حالة وسيقوم بإرجاع الإجابة المتوقعة استنادًا إلى القيمة التي تمررها إلى الوظيفة.
|
|||
|
|
|||
|
### مصادر
|
|||
|
|
|||
|
1 . [وصف "switch" - _مرجع JavaScript الخاص بـ MDN_](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch#Description) .
|