عنوان:
لماذا يتم توليد رقم عشوائي دائمًا صفر في دالة الجافا سكريبت؟
المحتوى:
في دالة generateId
التي كتبتها، تقوم بتوليد رقم عشوائي وإضافته إلى مصفوفة ids
، ولكن الرقم الذي يتم توليده دائمًا هو الرقم صفر. هذا يحدث بسبب خطأ في شرط الـ if
الخاص بك.
في السطر:
javascriptif(randomNum = ids.indexOf(randomNum))
تستخدم عملية الاستقصاء =
بدلاً من عملية المقارنة ==
أو ===
، مما يجعل الشرط يتم تقديم قيمة ids.indexOf(randomNum)
إلى randomNum
ويعيد القيمة الجديدة (التي عادة ما تكون 0 في حالة عدم وجود الرقم في المصفوفة)، لذلك يتم تنفيذ الشرط دائمًا وتُعيد الدالة نفس الرقم الذي تم توليده.
لحل هذه المشكلة، قم بتغيير الشرط إلى:
javascriptif(ids.includes(randomNum))
هذا سيتحقق مما إذا كان الرقم العشوائي موجودًا بالفعل في المصفوفة أم لا، وإذا كان كذلك، فسيتم استدعاء الدالة مرة أخرى لتوليد رقم جديد.
هناك أيضًا خطأ آخر في السطر:
javascriptids.push[randomNum];
يجب استخدام القوسين ( )
بدلاً من الأقواس [ ]
لأن push
هو دالة لإضافة عنصر إلى نهاية المصفوفة، لذا يجب أن تكون الصيغة الصحيحة كالتالي:
javascriptids.push(randomNum);
بعد تصحيح هذه الأخطاء، يجب أن تعمل دالتك بشكل صحيح وتوليد أرقام عشوائية مختلفة غير صفر.
الختام:
باختصار، لا تنسى استخدام ==
أو ===
للمقارنة بين القيم في شروطك، واستخدم الأقواس ( )
بدلاً من الأقواس [ ]
عند استدعاء دوال مثل push
للمصفوفات في جافا سكريبت.
المزيد من المعلومات
التوضيحات الإضافية:
- Math.random(): تُستخدم دالة
Math.random()
في جافا سكريبت لتوليد عدد عشوائي بين 0 و1 (بما في ذلك 0 ولكن ليس 1). - Math.floor(): تُستخدم دالة
Math.floor()
لتقريب العدد العشوائي الناتج إلى أقرب عدد صحيح أقل منه أو يساويه. - indexOf(): دالة
indexOf()
تُستخدم للعثور على مؤشر الفهرس لأول حدوث للقيمة المحددة ضمن المصفوفة. إذا لم تجد القيمة، فإنها تعيد -1. - includes(): دالة
includes()
تُستخدم للتحقق مما إذا كانت المصفوفة تحتوي على عنصر معين أم لا، وتعيد قيمةtrue
إذا كانت المصفوفة تحتوي على العنصر وfalse
إذا لم تكن تحتوي عليه. - تكرار الدالة: باستدعاء
generateId()
مرة أخرى في حالة تكرار الرقم العشوائي، يتم ضمان توليد رقم جديد حتى يتم الحصول على رقم غير موجود في المصفوفة.
مثال على الحل:
هناك تعديلات صغيرة يجب إجراؤها على دالتك generateId()
لتعمل بشكل صحيح. يمكنك استخدام الكود التالي:
javascriptfunction generateId() {
var randomNum = Math.floor((Math.random() * 10) + 1);
if(ids.includes(randomNum)) {
return generateId();
}
ids.push(randomNum);
return randomNum;
}
بهذا التعديل، يجب أن تعمل الدالة بشكل صحيح وتقوم بتوليد أرقام عشوائية مختلفة غير الصفر كما هو متوقع.