Freecodecamp: ES6: создание строк с использованием шаблонных литералов - тест не пройден - не обнаруживает шаблонных строк

Созданный на 28 дек. 2017  ·  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 Комментарий

Обновление: после некоторого расследования, проведенного одним из наших участников, похоже, что промежуточная ветка исправляет проблему, но не была перенесена на бета-версию.

Я могу подтвердить, что это действительно работает на постановке, но я думаю, что в описании можно было бы немного пояснить.

Была аналогичная проблема. Согласитесь с систимотиком. Изменение текста в тестовых примерах предлагается следующим образом:

Текущее: Использовались строки шаблона
Предложено: строки шаблона использовались с map ()

Я изучил это сегодня, проблема не указывает на то, что требуется использование .map (), и я смог решить / завершить ее с использованием и без использования .map (). Поэтому я не считаю, что здесь нужны какие-то изменения?

Пол (@PolarisTLX) и Кайл (@ jklemon17)

Я недавно проверил это с помощью решения @mstellaluna , а также решил его без использования карты, как это сделал

Похоже, что map теперь единственный метод передачи в новой версии . Следующие 2 метода не дали результата «Использованы строки шаблона»:

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)

Регулярное выражение не ожидает скобок перед следующей фигурной скобкой, и ваши решения приводят к сбою теста. Должно быть достаточно простое исправление. Я не лучший специалист с регулярным выражением, но это должно позволить использовать разные решения, подобные приведенным выше:

\`<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

Push не работает в этом упражнении (или не работает или я, и кажется, что
другие), используйте метод .map для прохождения теста.

Марк Кляйнхаус
[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>`
  }

@kanexte спасибо

Просто хотел вмешаться и упомянуть, что у меня тоже такая же проблема. Рад слышать, что это не я. Надеюсь, это скоро исправят.

Столкнувшись с той же проблемой. Думаю, мне придется официально оставить эту задачу незавершенной и двигаться дальше. IM (H) O - для этой задачи ссылка на элементы массива по их индексам является наиболее элегантным решением, а использование map / loops загромождает код.

У меня тоже такая проблема. Я пробовал использовать карту и теперь получаю сообщение об ошибке:

Реагировать не определено

Я думал, что тоже получаю это, но добавление карты делает это излишне трудным.

как ты решил проблему

P1xt - это правильный массив. Map - ключ к решению этой задачи, но не следует забывать, что он принимает функцию в качестве параметра.

@Tirjasdyn У меня такая же проблема, раздел fcc Es6 так сломан. Очень меньше инструкций. Нет инструкций по использованию map (), filter (), reduce () и в предыдущих задачах.

есть ли правильное решение этой проблемы?

@ Omerdogan3 Это неправильный путь, поскольку вы смотрите в задаче, желаемый результат
makeList (result.failure) должен вернуть:

  • [
  • без вар
  • ,
  • вар на вершине
  • ,
  • Разрыв строки
  • ]
    так как ваше решение не печатало запятую или ','.

Я согласен с @scissorsneedfoodtoo, что регулярное выражение в тестовом примере слишком ограничительно.

Я не мастер регулярных выражений, но это то, что я придумал / <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

Я все еще получаю ошибки для правильных решений.

все еще появляются> недопустимые флаги регулярного выражения

Привет всем. Спасибо, что нашли время сообщить нам об этой продолжающейся проблеме. Просто хотел сообщить вам, что тест регулярных выражений для этой задачи был недавно обновлен и вскоре должен быть запущен в производство.

По-прежнему получаются недопустимые флаги регулярного выражения:

const resultDisplayArray = arr.map ((a) => {
возврат <li class="text-warning">${a}</li>
});

@ mirkocoppola80 да, я не уверен, как часто бывают их слияния / сборки. Я не думаю, что они делали это с 30 мая, поэтому мы ждем, когда изменения вступят в силу.

Недопустимые флаги регулярного выражения на сегодня, ожидаем обновления ...

Я пробую использовать карту, петли и т. д., но не нашел решения. Вы это видите, может быть, нашли ключевую идею. https://www.youtube.com/watch?v=XzExdQye1Ls

@jsparadacelis Я следую коду в этом видео, это не работает

Привет, я также все еще получаю недопустимые флаги регулярного выражения с:

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

Это все еще не работает. Можно здесь прикурить?

Ага, до сих пор не могу найти рабочего решения этой проблемы

Я получаю сообщение об ошибке " Недопустимые флаги регулярного выражения" .

const resultDisplayArray = arr.map ((msg) => {
return <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> ];

у меня оба не работают, я думал, это мой код, но вроде что-то не работает

Пытался решить сегодня, но все равно не работает.

Я пробовал также с escape-знаками:

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 .. Не знаю, что происходит с этой задачей

Ага, все еще не работает. Получение той же ошибки, что и все остальные: «Неверные флаги регулярного выражения».
Пробовал с map, forEach и т. Д.

Оно работает! Я пробую одно и то же решение с картой каждую неделю, и теперь оно прошло! Ура!

У меня тоже сработало! :) Вчера не работал.

Подтверждено, теперь работает с

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

Спасибо за исправление.

Алелуйя !! оно работает

alleluia.finally работает

это должно работать без функции карты, просто используя обычные литералы шаблона, если это научит, как пространство сохраняется без добавления
теги или & nbsp;

Ниже вы можете найти работающий код :):

const result = {
успех: ["максимальная длина", "нет-amd", "предпочтительные-стрелочные-функции"],
сбой: ["no-var", "var-on-top", "linebreak"],
пропущено: ["id-blacklist", "no-dup-keys"]
};
function 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> ];
// изменить код над этой строкой

return 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 рейтинги