Freecodecamp: ES6: إنشاء سلاسل باستخدام القوالب الحرفية - فشل الاختبار - لا يكتشف سلاسل القالب

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



اسم التحدي

https://beta.freecodecamp.org/en/challenges/es6/create-strings-using-template-literals

وصف المشكلة


التحدي هو الفشل في الاختبار الأخير ، "تم استخدام سلاسل القالب".

معلومات المتصفح

اسم المتصفح ، الإصدار:
نظام التشغيل: FireFox 57.0 (64 بت) وإصدار Chrome 63.0.3239.84 (الإصدار الرسمي) (64 بت)
الهاتف المحمول أو الكمبيوتر المكتبي أو الجهاز اللوحي: الكمبيوتر المحمول Windows 10 Professional 64 بت

كودك


`const resultDisplayArray = result.failure.map(x => `<li class="text-warning">${x}</li>`);`

لقطة شاشة

image

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

تم تأكيد:

const resultDisplayArray = arr.map((a) => {
  return `<li class="text-warning">${a}</li>`
});

يعمل
لكن

const resultDisplayArray = [
  `<li class="text-warning">${arr[0]}</li>`,
  `<li class="text-warning">${arr[1]}</li>`,
  `<li class="text-warning">${arr[2]}</li>`
];

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

ال 75 كومينتر

تحديث: بعد إجراء بعض التحقيقات من قبل أحد المعسكر لدينا ، يبدو أن فرع التدريج يعمل على إصلاح المشكلة ولكن لم يتم نقله إلى الإصدار التجريبي.

يمكنني أن أؤكد أنه يعمل على التدريج ، لكنني أعتقد أن الوصف قد يحتاج إلى القليل من التوضيح.

كان لديه مشكلة مماثلة. نتفق مع systimotic. تم اقتراح تغيير النص في حالات الاختبار على النحو التالي:

الحالي: تم استخدام سلاسل القالب
مقترح: تم استخدام سلاسل النموذج مع الخريطة ()

لقد بحثت في هذا اليوم ، لا يشير التحدي إلى أن استخدام .map () مطلوب ، وقد تمكنت من حلها / إكمالها باستخدام .map () وبدونها. لذلك لا أعتقد أن هذا يحتاج إلى أي تغييرات؟

بول (PolarisTLX) وكايل (@ jklemon17)

لقد تحققت من هذا مؤخرًا باستخدام حل mstellaluna وقمت أيضًا بحلها دون استخدام الخريطة كما فعلت PolarisTLX . ربما يكون استخدام الخريطة هو الطريقة الأكثر إيجازًا لإكمال هذا التحدي ، لكنني أعتقد أنه يجب علينا ترك الأمر للمستخدمين بشأن كيفية القيام بذلك. لست متأكدًا من أن الوصف يحتاج إلى أي تغييرات حيث يتم إخبار المستخدم بما يجب أن ترجع إليه وظيفة makeList.

يبدو أن map هو الآن طريقة التمرير الوحيدة في الإصدار الجديد . فشلت الطريقتان التاليتان "تم استخدام سلاسل القالب":

const resultDisplayArray = [
  `<li class="text-warning">${arr[0]}</li>`,
  `<li class="text-warning">${arr[1]}</li>`,
  `<li class="text-warning">${arr[2]}</li>`
];
const resultDisplayArray = [];
  for (let i = 0; i < arr.length; i++) {
    resultDisplayArray.push(`<li class="text-warning">${arr[i]}</li>`)
  }

yoizfefisch ، أنت على حق. كلاهما حلين صالحين ، لكنهما لا يجتازان.

يبدو أن حالة الاختبار للقوالب الحرفية ليست مرنة بدرجة كافية:

getUserInput => assert(getUserInput('index').match(/\\`<li class=\"text-warning\">\\$\\{\\w+\\}<\\/li>\\`/g)

لا يتوقع التعبير العادي الأقواس قبل القوس المتعرج التالي ، وتتسبب حلولك في فشل الاختبار. يجب أن يكون إصلاحًا بسيطًا بدرجة كافية. لست الأفضل مع regex ، ولكن هذا من شأنه أن يسمح بحلول مختلفة مثل تلك المذكورة أعلاه:

\`<li \s*class\s*=\s*(\"\s*text-warning\s*\"|\'\s*text-warning\s*\')\s*>\s*\$\s*\{(\s*\w+\s*|\s*\w+\s*\[\s*[\w]+\s*\]\s*)\}\s*<\s*\/li\s*>\`

لست متأكدًا بالضبط من المكان الذي يجب أن يتم فيه هروب بعض الأحرف بشكل مزدوج بشرطتين مائلتين كما هو الحال في الاختبارات الحالية. هل يهتم أي شخص هنا بتحديث هذا الاختبار وتقديم PR؟

إليك أيضًا رابط محدث للتحدي المعني:
https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/es6/create-strings-using-template-literals

هل ترغب أيضًا في الإبلاغ عن هذا لا يزال يمثل مشكلة ، تعمل الخريطة من أجل الحل.

بالنظر إلى أن لدي نفس المشكلة في الإصدار الثابت من ES6 على FCC الذي تم نشره للتو في وقت سابق من هذا الأسبوع ، لدي بعض الشك في التفكير في الكود الخاص بي .. هل يمكن لأي شخص مساعدتي؟

هذا هو الكود الخاص بي: https://repl.it/repls/DizzyNiftyLocatorprogram

الدفع لا يعمل في هذا التمرين (أو لا يعمل ولا أنا ويبدو كذلك
آخرون) ، استخدم طريقة الخريطة لاجتياز الاختبار.

مارك كلاينهاوس
[email protected] [email protected]
206-234-4887

في الأحد 3 يونيو 2018 الساعة 6:10 صباحًا ، كتب aenkirch [email protected] :

بالنظر إلى أن لدي نفس المشكلة في الإصدار الثابت من ES6 على FCC
الذي تم نشره للتو في وقت سابق من هذا الأسبوع ، لدي بعض الشك في اعتبار برنامج
كود .. هل يستطيع احد مساعدتي؟

هذا هو الكود الخاص بي: https://repl.it/repls/DizzyNiftyLocatorprogram

-
أنت تتلقى هذا لأنك علقت.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/freeCodeCamp/freeCodeCamp/issues/16358#issuecomment-394161176 ،
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/AQdgL5WB3BsARAzpDfgyWHG8VsYm29yaks5t4-A3gaJpZM4ROiPm
.

إنهم يجتازون result.failure كمعامل.

الجواب الصحيح

// تغيير الكود أسفل هذا الخط
const resultDisplayArray = arr.map (x => <li class="text-warning">${x}</li> ) ؛

تم تأكيد:

const resultDisplayArray = arr.map((a) => {
  return `<li class="text-warning">${a}</li>`
});

يعمل
لكن

const resultDisplayArray = [
  `<li class="text-warning">${arr[0]}</li>`,
  `<li class="text-warning">${arr[1]}</li>`,
  `<li class="text-warning">${arr[2]}</li>`
];

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

@ P1xt تواجه نفس المشكلة. الحمد لله ليس أنا فقط.

const result = {
  success: ["max-length", "no-amd", "prefer-arrow-functions"],
  failure: ["no-var", "var-on-top", "linebreak"],
  skipped: ["id-blacklist", "no-dup-keys"]
};
function makeList(arr) {
  "use strict";

  // change code below this line
  const resultDisplayArray =
 [`<li class="text-warning">${arr[0]}</li>`, 
  `<li class="text-warning">${arr[1]}</li>`, 
  `<li class="text-warning">${arr[2]}</li>`];
  // change code above this line

  return resultDisplayArray;
}
/**
 * makeList(result.failure) should return:
 * [ <li class="text-warning">no-var</li>,
 *   <li class="text-warning">var-on-top</li>, 
 *   <li class="text-warning">linebreak</li> ]
 **/
const resultDisplayArray = makeList(result.failure);****

انا لدى نفس المشكله

@ richa031 كما أشرنا أعلاه ، تحتاج إلى استخدام Array.map ، مع نهجك لا يعمل.

هل هناك خطأ كتبته؟ ولماذا نستخدم وظيفة الخريطة هنا؟

إنها مشكلة سخيفة ولكن علامات الاقتباس المزدوجة مطلوبة أيضًا بين السلسلة الحرفية عندما يجب أن تكون علامات الاقتباس المفردة حلاً مقبولاً أيضًا.

استمرارًا لـ https://github.com/freeCodeCamp/freeCodeCamp/issues/16358#issuecomment -396369730 ،
أود أن أضيف أن هذا لا يعمل:

const resultDisplayArray = [];
  for (let i = 0; i < arr.length; i++) {
    resultDisplayArray[i] = `<li class="text-warning">${arr[i]}</li>`
  }

تضمين التغريدة

أردت فقط أن أتحدث وأذكر أنني أواجه نفس المشكلة أيضًا. سعيد لسماع أنه ليس أنا. اتمنى ان يتم اصلاحها قريبا

تواجه نفس المشكلة. أعتقد أنه سيتعين علي إبقاء هذا التحدي غير مكتمل رسميًا والمضي قدمًا. IM (H) O - بالنسبة لنطاق هذا التحدي ، فإن الرجوع إلى عناصر المصفوفة بواسطة مؤشراتها هو الحل الأكثر أناقة واستخدام الخريطة / الحلقات يفسد الكود.

أنا أيضا لدي هذه المشكلة. لقد حاولت استخدام الخريطة ويظهر لي خطأ الآن يقول:

لم يتم تعريف React

اعتقدت أنني كنت أحصل على هذا أيضًا ولكن رمي الخريطة هنا يجعل الأمر صعبًا بلا داعٍ.

كيف تحل المشكلة @ richa031

P1xt عبارة عن مصفوفة جامدة. الخريطة هي المفتاح لهذا التحدي ولكن يجب ألا تنسى أنها تأخذ وظيفة كمعامل

Tirjasdyn أواجه نفس المشكلة ، قسم fcc Es6 معطل جدًا. تعليمات أقل جدا. لا توجد تعليمات حول كيفية استخدام map () ، filter () ، تقليل () في التحديات السابقة أيضًا.

هل هناك أي حل مناسب لهذه المشكلة؟

@ Omerdogan3 ليست هذه هي الطريقة الصحيحة ، كما تنظر في التحدي الناتج المطلوب
يجب أن يعود makeList (result.failure):

  • [
  • لا فار
  • ،
  • فار على القمة
  • ،
  • الخط مقطوع
  • ]
    لأن الحل الخاص بك لم يطبع فاصلة أو "،".

أتفق مع scissorsneedfoodtoo على أن التعبير المعتاد في حالة الاختبار مقيد للغاية.

أنا لست معجباً في regex لكن هذا ما توصلت إليه / <li class="text-warning">\$\{[\w\[\]]+\}<\/li> / g (بدون هروب الخطوط المائلة العكسية للسلسلة). سيسمح هذا لـ ... حلول الحلقة التي وصلت إلى المصفوفة باستخدام علامة القوسين arr [i] والتي يبدو أنها غير مسموح بها في اختبار التعبير العادي الحالي.

const resultDisplayArray = arr.map ((a) => {
إرجاع <li class="text-warning">${a}</li>
}) ؛ ``

لا يزال الحصول على Invalid regular expression flags

لقد حصلت للتو على Invalid regular expression flags

ما زلت أتلقى أخطاء للحصول على حلول صحيحة أيضًا.

لا يزال يتم الحصول على> علامات التعبير العادي غير صالح

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

لا يزال يتم الحصول على علامات تعبير عادي غير صالح مع:

const resultDisplayArray = arr.map ((a) => {
إرجاع <li class="text-warning">${a}</li>
}) ؛

@ mirkocoppola80 نعم ، لست متأكدًا من عدد مرات الدمج /

علامات التعبير العادي غير صالحة لليوم ، في انتظار التحديث ...

أحاول باستخدام خريطة ، حلقات ، إلخ ، لكني لم أجد حلاً. يمكنك رؤيتها ، ربما وجدت فكرة أساسية. https://www.youtube.com/watch؟v=XzExdQye1Ls

jsparadacelis أتبع الكود الموجود على هذا الفيديو ، هذا لا يعمل

مرحبًا ، ما زلت أحصل أيضًا على علامات تعبير عادي غير صالح مع:

const resultDisplayArray = arr.map (item => <li class="text-warning">${item}</li> ) ؛

فإنه لا يزال لا يعمل. هل يمكننا الحصول على ضوء هنا من فضلك؟

نعم ، ما زلت غير قادر على إيجاد حل عملي لهذا التحدي

أحصل على خطأ إشارات تعبير عادي غير صالح .

const resultDisplayArray = arr.map ((msg) => {
إرجاع <li class="text-warning">${msg}</li> ؛
}) ؛

أحصل أيضًا على خطأ إشارات تعبير عادي غير صالح أدناه.
screen shot 2018-07-11 at 9 37 41 pm

ما زلت أتلقى خطأ إشارات تعبير عادي غير صالح .
https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/es6/create-strings-using-template-literals/

لقد جربته باستخدام الخريطة وكل شيء وما زلت أحصل على أعلام تعبير عادي غير صالح

أكد ما زال لا يعمل

ما زلت لا تعمل ، بل محبطة

في الوقت الحالي ، لا تعمل طريقة MAP ولا الأساليب الأكثر بساطة ولكنها طويلة ، ونفس الخطأ - "إشارات تعبير عادي غير صالح" على الرغم من اجتياز الاختبارات الأخرى

مرحبًا ، إذا وجد أي شخص طريقة ، من فضلك أخبرني ، لا يمكنني تقديم xD (أعلم أنه يمكنني تخطي ذلك ولكن يا الوسواس القهري)

لا يزال لا يعمل بالنسبة لي.

مرحبًا ، أنا مجرد رجل آخر أكتب أنه ما زال لا يعمل.

لقد رأيت أنه من المفترض أنه تم إصلاحه ولم يتم نشره بعد ، لكنني أردت النشر في حال احتاج إلى مزيد من المعلومات. لقد قمت بتأكيد الإخراج الصحيح باستخدام console.log () ومع ذلك ، فإن الحل الخاص بي لا يجتاز اختبار "تم استخدام سلاسل القوالب".
رمز بلدي:

const resultDisplayArray = arr.map(x => `<li class="text-warning">${x}</li>`);
console.log(resultDisplayArray);

إخراج وحدة التحكم:

// running test
Invalid regular expression flags
// tests completed
<li class="text-warning">no-var</li>,<li class="text-warning">var-on-top</li>,<li class="text-warning">linebreak</li>

لا يزال لا يعمل. const resultDisplayArray = arr.map(num => '<li class="text-warning">${num}</li>');
// اختبار تشغيل
علامات التعبير العادي غير صالحة
// اكتملت الاختبارات

طريقة الخريطة لا تزال لا تعمل. مع أو بدون عودة.

لا تزال تنتظر الإصلاح

const resultDisplayArray = arr.map (val => {return <li class="text-warning">${val}</li> }) ؛

الحصول على نتيجة علامات تعبير عادي غير صالح.

const resultDisplayArray = arr.map (x => <li class="text-warning">${x}</li> ) ؛

const resultDisplayArray = [ <li class="text-warning">${arr[0]}</li> ، <li class="text-warning">${arr[1]}</li> ، <li class="text-warning">${arr[2]}</li>

كلاهما لا يعمل لدي ، اعتقدت أنه كان الرمز الخاص بي ، لكن يبدو أن شيئًا ما معطل

حاولت حلها اليوم ، لكنها ما زالت لا تعمل.

لقد جربته أيضًا باستخدام علامات الهروب:

const resultDisplayArray = arr.map (x => <li class=\"text-warning\">${x}</li> ) ؛

لكنها لا تزال "إشارات تعبير عادي غير صالحة"

لقد حاولت أيضًا حلها ، ولكن استمر في الحصول على نفس "إشارات التعبير العادي غير الصالحة" كإخراج. يتم اجتياز 2 من الاختبارات الثلاثة ولكني ما زلت أتلقى الرسالة.

const resultDisplayArray = arr.map (val => <li class="text-warning">${val}</li> ) ؛

لقد استخدمت أيضًا حلقة for بسيطة وحصلت على نفس النتيجة

لا يزال غير ثابت! 😢

نعم لقد كتبتها مثل 4 طرق ولا تعمل. ضبطته. فقط تخطيه والمضي قدمًا

ما زلت لا تعمل ..

نفس المشكلة؛

const resultDisplayArray = arr.map((a) => { return `<li class="text-warning">${a}</li>` });

إرجاع الخطأ "إشارات تعبير عادي غير صالحة"

تأكيد ما زال لا يعمل.
حاولت forEach، for loop، map..لا فكرة عما يحدث مع هذا التحدي

نعم ، ما زلت لا تعمل. الحصول على نفس الخطأ مثل أي شخص آخر ، "إشارات تعبير عادي غير صالحة".
حاولت باستخدام الخريطة ، لكل واحد ، إلخ.

إنها تعمل! أحاول نفس الحل مع الخريطة كل أسبوع وقد مر الآن! الصيحة!

عملت من أجلي أيضا! :) لم يكن يعمل أمس.

مؤكد يعمل الآن مع

const resultDisplayArray = arr.map((msg) => {
  return `<li class="text-warning">${msg}</li>`;
});

شكرا على الإصلاح.

العلوية !! إنها تعمل

يعمل alleluia. أخيرًا

يجب أن يعمل هذا بدون وظيفة الخريطة ، فقط باستخدام القيم الحرفية العادية للقالب ، وهذا من شأنه أن يعلم كيفية الحفاظ على المساحة دون إضافة
العلامات أو نبسب ؛

يمكنك العثور أدناه على الكود الذي يعمل :):

نتيجة const = {
النجاح: ["max-length"، "no-amd"، "prefer-arrow-function"]،
فشل: ["no-var"، "var-on-top"، "linebreak"]،
تم تخطي: ["id-blacklist"، "no-dup-keys"]
} ؛
وظيفة makeList (arr) {
"استخدام صارم" ؛

// تغيير الكود أسفل هذا الخط
const resultDisplayArray = [ <li class="text-warning">${arr[0]}</li> ،
<li class="text-warning">${arr[1]}</li> ،
<li class="text-warning">${arr[2]}</li> ] ؛
// تغيير الكود فوق هذا الخط

إرجاع resultDisplayArray ؛
}
/ **

  • يجب أن يعود makeList (result.failure):
  • [ <li class="text-warning">no-var</li> ،
  • <li class="text-warning">var-on-top</li> ،
  • <li class="text-warning">linebreak</li> ]
    ** /
    const resultDisplayArray = makeList (result.failure) ،
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات