Freecodecamp: ES6: Criar Strings usando Literais de Template - Falha no teste - Não detecta strings de template

Criado em 28 dez. 2017  ·  75Comentários  ·  Fonte: freeCodeCamp/freeCodeCamp



Nome do Desafio

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

descrição do problema


O desafio é falhar no último teste, 'Strings de modelo foram usadas'.

Informação do navegador

Nome do navegador, versão:
Sistema operacional: FireFox 57.0 (64 bits) e Chrome versão 63.0.3239.84 (versão oficial) (64 bits)
Celular, desktop ou tablet: laptop Windows 10 Professional de 64 bits

Seu código


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

Captura de tela

image

Comentários muito úteis

confirmado:

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

trabalho
mas

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

não funciona. E, não há menção de mapa na lição - e, mapa nem é introduzido no currículo até a seção de Programação Funcional que vem após esta seção.

Todos 75 comentários

Atualização: após alguma investigação por um de nossos campistas, parece que o branch de teste corrigiu o problema, mas não foi transferido para a versão beta.

Posso confirmar que funciona na preparação, mas acho que a descrição poderia ser um pouco mais esclarecida.

Teve um problema semelhante. Concordo com o sistematimótico. Alteração de texto nos casos de teste propostos da seguinte forma:

Atual: strings de modelo foram usadas
Proposta: strings de modelo foram usadas com map ()

Eu olhei para isso hoje, o desafio não indica que usar .map () é necessário, e eu fui capaz de resolver / completar com e sem usar .map (). Portanto, eu não acredito que isso precise de alterações?

Paul (@PolarisTLX) e Kyle (@ jklemon17)

Eu verifiquei isso recentemente usando a solução de @mstellaluna e também resolvi sem usar o mapa, como fez @PolarisTLX . Usar o mapa é provavelmente a maneira mais concisa de completar este desafio, mas acho que devemos deixar para os usuários como fazer isso. Não tenho certeza se a descrição precisa de alterações, pois o usuário é informado sobre o que a função makeList deve retornar.

Parece que map é agora o único método de passagem na nova versão . Os 2 métodos a seguir falharam 'Strings de modelo foram usadas':

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 , você está certo. Ambas são soluções válidas, mas não passam.

Parece que o caso de teste para literais de modelo não é bastante flexível:

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

A regex não espera colchetes antes da próxima chave e suas soluções fazem com que o teste falhe. Deve ser uma correção bastante simples. Não sou o melhor com regex, mas isso deve permitir soluções diferentes como as acima:

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

Não tenho certeza exatamente onde alguns caracteres teriam que ter escape duplo com duas barras como nos testes atuais, no entanto. Alguém aqui estaria interessado em atualizar este teste e enviar um PR?

Além disso, aqui está um link atualizado para o desafio em questão:
https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/es6/create-strings-using-template-literals

Também gostaria de relatar que este ainda é um problema, o mapa funciona para a solução.

Considerando que tenho o mesmo problema na versão estável do ES6 no FCC que acabou de ser implantada no início desta semana, tenho algumas dúvidas quanto ao meu código .. Alguém pode me ajudar?

Aqui está meu código: https://repl.it/repls/DizzyNiftyLocatorprogram

Push não funciona neste exercício (ou não funcionou ou a mim e parece que
outros), use o método .map para passar no teste.

Mark Kleinhaus
[email protected] [email protected]
206-234-4887

No domingo, 3 de junho de 2018 às 6h10, aenkirch [email protected] escreveu:

Considerando que tenho o mesmo problema na versão estável do ES6 no FCC
que acabou de ser implantado no início desta semana, tenho algumas dúvidas, considerando meu
código .. Alguém pode me ajudar?

Aqui está meu código: https://repl.it/repls/DizzyNiftyLocatorprogram

-
Você está recebendo isso porque comentou.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/freeCodeCamp/freeCodeCamp/issues/16358#issuecomment-394161176 ,
ou silenciar o tópico
https://github.com/notifications/unsubscribe-auth/AQdgL5WB3BsARAzpDfgyWHG8VsYm29yaks5t4-A3gaJpZM4ROiPm
.

Eles estão passando result.failure como parâmetro.

A resposta certa é

// mude o código abaixo desta linha
const resultDisplayArray = arr.map (x => <li class="text-warning">${x}</li> );

confirmado:

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

trabalho
mas

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

não funciona. E, não há menção de mapa na lição - e, mapa nem é introduzido no currículo até a seção de Programação Funcional que vem após esta seção.

@ P1xt Tendo o mesmo problema. Felizmente não sou só eu.

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);****

Estou tendo o mesmo problema

@ richa031 Como apontado acima, você precisa usar Array.map, com sua abordagem não funciona.

há algo que eu escrevi errado? e por que estamos usando a função de mapa aqui?

É uma questão boba, mas as aspas duplas também são necessárias entre a string literal quando aspas simples também deveriam ser uma solução aceitável.

Em continuação para https://github.com/freeCodeCamp/freeCodeCamp/issues/16358#issuecomment -396369730,
Eu gostaria de acrescentar que isso nem funciona:

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

@kanexte obrigado

Só queria intervir e dizer que também estou tendo o mesmo problema. Fico feliz em saber que não sou eu. Espero que seja corrigido em breve.

Enfrentando o mesmo problema. Acho que terei que manter esse desafio oficialmente inacabado e seguir em frente. IM (H) O - para o escopo deste desafio, referenciar os elementos do array por seus índices é a solução mais elegante e o uso de mapas / loops confunde o código.

Eu também estou tendo este problema. Tentei usar o mapa e agora recebo um erro que diz:

React não está definido

Eu pensei que estava entendendo isso também, mas jogar o mapa aqui só torna isso desnecessariamente difícil.

como você resolveu o problema @ richa031

P1xt is rigth array.map é a chave para este desafio, mas você não deve esquecer que ele tem uma função como parâmetro

@Tirjasdyn Estou tendo o mesmo problema, a seção FCC Es6 está muito quebrada. Muito menos instruções. Nenhuma instrução de como usar map (), filter (), reduce () nos desafios anteriores também.

existe alguma solução adequada para este problema?

@ Omerdogan3 Esta não é a maneira correta, como você olha no desafio, o resultado desejado é
makeList (result.failure) deve retornar:

  • [
  • no-var
  • ,
  • var-on-top
  • ,
  • quebra de linha
  • ]
    como sua solução não imprimiu vírgula ou ','.

Estou de acordo com @scissorsneedfoodtoo que a regex no caso de teste é muito restritiva.

Não sou um gênio do regex, mas é isso que eu inventei / <li class="text-warning">\$\{[\w\[\]]+\}<\/li> / g (sem as barras invertidas escapadas para string). Isso permitiria ... soluções de loop que acessassem a matriz com a notação de colchetes arr [i], que parece não ser permitida com o teste de expressão regular atual.

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

Ainda recebendo Invalid regular expression flags

Acabei de receber Invalid regular expression flags

Ainda estou recebendo erros de soluções corretas.

ainda obtendo os> Sinalizadores de expressão regular inválidos

Olá a todos. Obrigado por nos informar sobre esse problema em andamento. Queria apenas informar a todos que o teste de regex para este desafio foi atualizado recentemente e deve ser colocado em produção em breve.

Ainda recebendo sinalizadores de expressão regular inválidos com:

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

@ mirkocoppola80 sim, não tenho certeza da frequência com que são mesclados / compilados. Não acho que eles tenham feito isso desde 30 de maio, então estamos esperando por isso para que as alterações entrem em vigor.

Sinalizadores de expressão regular inválidos para hoje, aguardando a atualização ...

tento com map, for loops, etc, mas não encontrei uma solução. Você pode ver, talvez tenha encontrado uma ideia-chave. https://www.youtube.com/watch?v=XzExdQye1Ls

@jsparadacelis Eu sigo o código daquele vídeo, isso não funciona

Olá, ainda estou recebendo sinalizadores de expressão regular inválidos com:

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

Ainda não está funcionando. Podemos ter uma luz aqui, por favor?

Sim, ainda não consigo encontrar uma solução de trabalho para este desafio

Recebo erro de sinalizadores de expressão regular inválidos .

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

Também recebo o erro de sinalizadores de expressão regular inválidos abaixo.
screen shot 2018-07-11 at 9 37 41 pm

Ainda estou recebendo erros de sinalizadores de expressão regular inválidos .
https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/es6/create-strings-using-template-literals/

Eu tentei com map e tudo mais e ainda recebo sinalizadores de expressão regular inválidos

Confirmado que ainda não funciona

Ainda não está funcionando, bastante frustrante

No momento, nem o método MAP nem as abordagens mais simples, porém demoradas, funcionam, mesmo erro - "Sinalizadores de expressão regular inválidos", embora os outros testes sejam aprovados

Ei, se alguém encontrar uma maneira, por favor me diga, eu não posso avançar xD (eu sei que poderia pular, mas meu TOC)

Ainda não está funcionando para mim.

Ei, eu sou apenas mais um cara para escrever que ainda não funciona.

Eu vi que isso está supostamente corrigido e ainda não implantado, mas gostaria de postar caso precise de mais informações. Confirmei a saída correta com console.log (), no entanto, minha solução não passa no teste "Strings de modelo foram usadas".
meu código:

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

saída do console:

// 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>

Ainda não funciona. const resultDisplayArray = arr.map(num => '<li class="text-warning">${num}</li>');
// executando teste
Sinalizadores de expressão regular inválidos
// testes concluídos

O método do mapa ainda não funciona. Com ou sem volta.

ainda esperando por conserto

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

Obtendo resultado de sinalizadores de expressão regular inválido.

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> ];

ambos não funcionam para mim, pensei que fosse meu código, mas parece que algo está quebrado

Tentei resolver hoje, mas ainda não funciona.

Eu tentei também com marcas de escape:

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

mas ainda é "Sinalizadores de expressão regular inválidos"

Eu também tentei resolvê-lo, mas continuo a obter os mesmos "Sinalizadores de expressão regular inválidos" como saída. 2 dos três testes foram aprovados, mas continuo a receber a mensagem.

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

Também usei um loop for simples e obtive o mesmo resultado

Ainda não corrigido! 😢

sim, eu escrevi de 4 maneiras e não funciona. está quebrado. apenas pule e siga em frente

Ainda não funciona..

Mesmo problema;

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

retorna o erro "sinalizadores de expressão regular inválidos"

Confirme que ainda não está funcionando.
Tentei forEach, for loop, map .. Não tenho ideia do que está acontecendo com este desafio

Sim, ainda não está funcionando. Obtendo o mesmo erro de todos os outros, "Sinalizadores de expressão regular inválidos".
Tentei com map, forEach, etc.

Funciona! Tento a mesma solução com o mapa todas as semanas e agora passou! Hooray!

Funcionou para mim também! :) Não estava funcionando ontem.

Confirmado agora funciona com

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

Obrigado pela correção.

Aleluya !! funciona

alleluia.finalmente funciona

isso deve funcionar sem a função de mapa, apenas usando literais de modelo normais, mas isso ensinaria como o espaço é preservado sem adicionar
tags ou & nbsp;

Abaixo você pode encontrar o código que funciona :):

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

// mude o código abaixo desta linha
const resultDisplayArray = [ <li class="text-warning">${arr[0]}</li> ,
<li class="text-warning">${arr[1]}</li> ,
<li class="text-warning">${arr[2]}</li> ];
// altere o código acima desta linha

return resultDisplayArray;
}
/ **

  • makeList (result.failure) deve retornar:
  • [ <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);
Esta página foi útil?
0 / 5 - 0 avaliações