Freecodecamp: Bonfire: Falsy Bouncer - تعليمات متناقضة

تم إنشاؤها على ١٥ ديسمبر ٢٠١٥  ·  3تعليقات  ·  مصدر: freeCodeCamp/freeCodeCamp

تحدي النار: لدى Falsy Bouncer مشكلة.
وكيل المستخدم هو: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36 .

تشير التعليمات إلى Falsy Bouncer إلى أن القيمة Falsy من أنواع مختلفة بما في ذلك NaN .
يتطلب الاختبار الأول أن تعيد وظيفة استدعاء الحارس ([7، "ate"، ""، false، 9]) [7، "ate"، 9]
ومع ذلك ، لاحظ أن السلسلة "ate" هي NaN لذلك لا يجب تضمينها في المصفوفة الناتجة.

لذلك يبدو أنه لا توجد طريقة لاجتياز الاختبار 1 والاختبار 3 بنفس كتلة الكود ، فهما إجابات متعارضة.

رمز بلدي:

function bouncer(arr) {

  arr = arr.filter(function(val){
    if (val === false || val === null || val === undefined || val === "" || val === 0 || isNaN(val)) return false;
    return true;
  });

  return arr;
}

bouncer([false, null, 0, NaN, undefined, ""]);

التعليق الأكثر فائدة

ومن الناحية الفنية ، يمكنك استخدام الدالة Boolean للقيام بذلك نيابةً عنك ، بحيث يمكن حل المشكلة:
return arr.filter(Boolean) ، نظرًا لأن Boolean تأخذ قيم صواب / خطأ وتعيد صواب أو خطأ.

ال 3 كومينتر

أعتذر مقدمًا إذا كنت قد أسأت فهم شيء ما هنا.

NaN هي القيمة الفعلية التي يمكن أن يمتلكها المتغير وهي خاطئة. "ate" ليس رقمًا و isNan("ate") سيعود صحيحًا ، لكن القيمة "ate" ليست خاطئة ، فقط القيمة المحددة لـ NaN خاطئة. إن جمال القيم الخاطئة (ومصدرها العرضي) هو أنك لست بحاجة إلى البحث عنها صراحة كما تفعل التعليمات البرمجية الخاصة بك ، لأنه كلما كانت هناك حاجة إلى قيمة منطقية ، فإن جافا سكريبت ستكتبها إلى قيمة منطقية خطأ. ما يعنيه هذا هو أن رمز وظيفة التصفية الخاص بك يمكن أن يكون ببساطة:

arr = arr.filter(function(val){
  return val;
});

شكرا وترميز سعيد!

ومن الناحية الفنية ، يمكنك استخدام الدالة Boolean للقيام بذلك نيابةً عنك ، بحيث يمكن حل المشكلة:
return arr.filter(Boolean) ، نظرًا لأن Boolean تأخذ قيم صواب / خطأ وتعيد صواب أو خطأ.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات