اذهب إلى المحتوى
  • 0

لا يمكن قراءة الدالة length من متغير غير معرف undefined لغة javaScript

Hussein Ouda

السؤال

Recommended Posts

  • 1
بتاريخ 22 دقائق مضت قال Hussein Aoda:

اليك صورة السؤال ومرفق ملف

splits the string into pairs of two characters.js

نعم صديقي حسين الشيفرة تعمل بشكل صحيح و بعد إجراء الإختبارات عليها إجتازت إختبارين بنجاح و فشلت في إختبار واحد و هو نفس السبب الذي أخبرتك به و هو أن في الإختبار الثالث قمت بإستدعاء الدالة solution و تمرير string فارغ إليها :

//  على نص فارغ split لأنك تقوم بإستدعاء الدالة  undefined تساوي array هنا ستكون قيمة المتغير
var array = str.split("");

// undefined على متغير قيمته length  هنا يحدث الخطأ تقوم بإستدعاء الدالة 
for (var i = 0; i < array.length; i = i + 2) {
     var pair = [];
     pair.push(array[i], array[i + 1])
     collector.push(pair)
   }

و هذا كان سبب ظهور الخطأ أنك إستدعيت الدالة length على متغير قيمته undefined ( المتغير array) لإصلاح المشكلة و لتجاوز الإختبار الثالث علينا قبل إجراء أي عملية على قيمة المتغير str يجب التأكد من أن المتغير str من النوع string و هو غير فارغ أما في حال إذا ما كانت قيمة المتغير str ليست من النوع string أو فارغة سنقوم بإرجاع مصفوفة فارغة كما هو متوقع في الإختبار الثالث كالتالي :

function solution(str){
   // نقوم بإرجاع مصفوفة فارغة string غير صحيحة أو من نوع غير str إذا كانت قيمة المتغير
   if(!str || typeof str !== "string") return [];
   var array = str.split("");
   var collector = [];
   var result = [];
   for (var i = 0; i < array.length; i = i + 2) {
     var pair = [];
     pair.push(array[i], array[i + 1])
     collector.push(pair)
   }
   for (var i = 0; i < collector.length; i++) {
     var pairString = ""
     pairString = collector[i].join("")
     result.push(pairString)
   }
   if (result[result.length - 1].length % 2 !== 0) {
     result[result.length - 1] += "_"
   }
   return result;
}

بعد هذه الإضافة ستجتاز الدالة الإختبارات الثلاث بنجاح.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

مرحبًا حسين..

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

الرجاء إرفاق الملف كاملًا.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

أهلا نزال 

السؤال يقول : 

اقتباس

Complete the solution so that it splits the string into pairs of two characters. If the string contains an odd number of characters then it should replace the missing second character of the final pair with an underscore ('_').

Examples:

 

solution('abc') // should return ['ab', 'c_']
solution('abcdef') // should return ['ab', 'cd', 'ef']

 

والاجابة التي كتبتها هي : 

function solution(str){
   var array = str.split("");
   var collector = [];
   var result = [];
   for (var i = 0; i < array.length; i = i + 2) {
     var pair = [];
     pair.push(array[i], array[i + 1])
     collector.push(pair)
   }
   for (var i = 0; i < collector.length; i++) {
     var pairString = ""
     pairString = collector[i].join("")
     result.push(pairString)
   }
   if (result[result.length - 1].length % 2 !== 0) {
     result[result.length - 1] += "_"
   }
   return result;
}

 

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 9 دقائق مضت قال Hussein Aoda:

أهلا نزال 

السؤال يقول : 

 


solution('abc') // should return ['ab', 'c_']
solution('abcdef') // should return ['ab', 'cd', 'ef']

السؤال يطلب منك عمل دالة تقبل string و تقوم بإرجاع مصفوفة في كل خانة منها تحتوي على حرفين من النص , في حال إذا ما كان عدد حروف النص فردي و ليس جوزي إذا أخر حرف يتبقى وحيدًا قم بإضافة "_" إليه ليصبح متكون من حرفين.

اقتباس

والاجابة التي كتبتها هي : 


function solution(str){
   var array = str.split("");
   var collector = [];
   var result = [];
   for (var i = 0; i < array.length; i = i + 2) {
     var pair = [];
     pair.push(array[i], array[i + 1])
     collector.push(pair)
   }
   for (var i = 0; i < collector.length; i++) {
     var pairString = ""
     pairString = collector[i].join("")
     result.push(pairString)
   }
   if (result[result.length - 1].length % 2 !== 0) {
     result[result.length - 1] += "_"
   }
   return result;
}

 

 

لقد قمت بتجربة الحل هذا و النتيجة صحيحة , لا اعلم ما نوع المشكلة التي واجهتك الرجاء التوضيح أكثر.

أعتقد أن السبب في ظهور رسالة الخطأ هو أنك عندما إستدعيت الدالة solution قمت بإدخال نص فارغ.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 23 دقائق مضت قال Nezar Madi:

 

لقد قمت بتجربة الحل هذا و النتيجة صحيحة , لا اعلم ما نوع المشكلة التي واجهتك الرجاء التوضيح أكثر.

أعتقد أن السبب في ظهور رسالة الخطأ هو أنك عندما إستدعيت الدالة solution قمت بإدخال نص فارغ.

كتبت الكودكما هو دون استدعاء دالة 

ويعطيني أن كل الاجابات صحيح باستثناء ذلك الخطأ 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 5 دقائق مضت قال Hussein Aoda:

كتبت الكودكما هو دون استدعاء دالة 

ويعطيني أن كل الاجابات صحيح باستثناء ذلك الخطأ 

الرجاء إرسال الملف حتى أقوم بتشغيله عندي و أرى سبب الخطأ و كيفية تنفيذك له.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...