Freecodecamp: ES6: Crear cadenas con literales de plantilla - La prueba falla - No detecta cadenas de plantilla

Creado en 28 dic. 2017  ·  75Comentarios  ·  Fuente: freeCodeCamp/freeCodeCamp



Nombre del desafío

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

descripcion del problema


El desafío es fallar la última prueba, 'Se usaron cadenas de plantilla'.

Información del navegador

Nombre del navegador, versión:
Sistema operativo: FireFox 57.0 (64 bits) y Chrome versión 63.0.3239.84 (compilación oficial) (64 bits)
Móvil, escritorio o tableta: Laptop Windows 10 Professional de 64 bits

Tu codigo


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

Captura de pantalla

image

Comentario más útil

confirmado:

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

trabajos
pero

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

No funciona. Y no se menciona el mapa en la lección, y el mapa ni siquiera se introduce en el plan de estudios hasta la sección de Programación funcional que viene después de esta sección.

Todos 75 comentarios

Actualización: después de una investigación por parte de uno de nuestros campistas, parece que la rama de preparación soluciona el problema, pero no se ha transferido a la versión beta.

Puedo confirmar que funciona en la puesta en escena, pero creo que la descripción podría necesitar un poco de aclaración.

Tuve un problema similar. De acuerdo con systimotic. Cambio de texto en los casos de prueba propuestos de la siguiente manera:

Actual: Se utilizaron cadenas de plantilla
Propuesto: se utilizaron cadenas de plantilla con map ()

He investigado esto hoy, el desafío no indica que se requiera usar .map (), y pude resolverlo / completarlo con y sin usar .map (). Por tanto, ¿no creo que esto necesite cambios?

Paul (@PolarisTLX) y Kyle (@ jklemon17)

Revisé esto recientemente usando la solución de lo hizo

Parece que map es ahora el único método de paso en la nueva versión . Los siguientes 2 métodos fallaron 'Se usaron cadenas de plantilla':

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 , tienes razón. Ambas son soluciones válidas, pero no pasan.

Parece que el caso de prueba para literales de plantilla no es lo suficientemente flexible:

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

La expresión regular no espera corchetes antes de la siguiente llave y sus soluciones hacen que la prueba falle. Debería ser una solución bastante simple. No soy el mejor con expresiones regulares, pero esto debería permitir diferentes soluciones como las anteriores:

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

Sin embargo, no estoy seguro exactamente de dónde algunos personajes tendrían que escapar dos veces con dos barras, como en las pruebas actuales. ¿Alguien aquí interesado en actualizar esta prueba y enviar un PR?

Además, aquí hay un enlace actualizado al desafío en cuestión:
https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/es6/create-strings-using-template-literals

También me gustaría informar que esto sigue siendo un problema, el mapa funciona para la solución.

Teniendo en cuenta que tengo el mismo problema en la versión estable de ES6 en FCC que se implementó a principios de esta semana, tengo algunas dudas sobre mi código. ¿Puede alguien ayudarme?

Aquí está mi código: https://repl.it/repls/DizzyNiftyLocatorprogram

Empujar no funciona en este ejercicio (o no lo ha hecho yo y parece que
otros), utilice el método .map para pasar la prueba.

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

El domingo, 3 de junio de 2018 a las 6:10 a.m., aenkirch [email protected] escribió:

Considerando que tengo el mismo problema en la versión estable de ES6 en FCC
que se implementó a principios de esta semana, tengo algunas dudas considerando mi
código .. ¿Alguien puede ayudarme?

Aquí está mi código: https://repl.it/repls/DizzyNiftyLocatorprogram

-
Estás recibiendo esto porque comentaste.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/freeCodeCamp/freeCodeCamp/issues/16358#issuecomment-394161176 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AQdgL5WB3BsARAzpDfgyWHG8VsYm29yaks5t4-A3gaJpZM4ROiPm
.

Están pasando result.failure como parámetro.

La respuesta correcta es

// cambia el código debajo de esta línea
const resultDisplayArray = arr.map (x => <li class="text-warning">${x}</li> );

confirmado:

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

trabajos
pero

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

No funciona. Y no se menciona el mapa en la lección, y el mapa ni siquiera se introduce en el plan de estudios hasta la sección de Programación funcional que viene después de esta sección.

@ P1xt Tiene el mismo problema. Afortunadamente no soy solo yo.

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

Estoy teniendo el mismo problema

@ richa031 Como se señaló anteriormente, necesita usar Array.map, con su enfoque no funciona.

¿Hay algo que escribí mal? y ¿por qué usamos la función de mapa aquí?

Es un problema tonto, pero también se requieren comillas dobles entre el literal de cadena cuando las comillas simples también deberían ser una solución aceptable.

Continuando con https://github.com/freeCodeCamp/freeCodeCamp/issues/16358#issuecomment -396369730,
Me gustaría agregar que esto tampoco funciona:

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

@kanexte gracias

Solo quería intervenir y mencionar que yo también tengo el mismo problema. Me alegra saber que no soy yo. Espero que se solucione pronto.

Frente al mismo problema. Supongo que tendré que mantener este desafío oficialmente inacabado y seguir adelante. IM (H) O: para el alcance de este desafío, hacer referencia a los elementos de la matriz por sus índices es la solución más elegante y el uso de mapas / bucles satura el código.

También estoy teniendo este problema. Intenté usar el mapa y ahora aparece un error que dice:

Reaccionar no está definido

Pensé que también estaba entendiendo esto, pero lanzar un mapa aquí lo hace innecesariamente difícil.

¿Cómo resolviste el problema

P1xt es la matriz correcta, el mapa es la clave para este desafío, pero no debe olvidar que toma una función como parámetro.

@Tirjasdyn Estoy teniendo el mismo problema, la sección fcc Es6 está tan rota. Muy menos instrucciones. No hay instrucciones sobre cómo usar map (), filter (), reduce () en desafíos anteriores también.

¿Existe alguna solución adecuada a este problema?

@ Omerdogan3 Esta no es la forma correcta, como ves en el desafío, la salida deseada es
makeList (result.failure) debería devolver:

  • [
  • no-var
  • ,
  • var-on-top
  • ,
  • salto de línea
  • ]
    ya que su solución no imprimió coma o ','.

Estoy de acuerdo con @scissorsneedfoodtoo en que la expresión regular en el caso de prueba es demasiado restrictiva.

No soy un experto en expresiones regulares, pero esto es lo que se me ocurrió / <li class="text-warning">\$\{[\w\[\]]+\}<\/li> / g (sin las barras invertidas escapadas para la cadena). Esto permitiría ... soluciones de bucle que accedieron a la matriz con notación de corchetes arr [i] que parece no estar permitida con la prueba de expresión regular actual.

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

Sigo recibiendo Invalid regular expression flags

Acabo de obtener Invalid regular expression flags

También sigo recibiendo errores para las soluciones correctas.

todavía obteniendo los> indicadores de expresión regular no válidos

Hola a todos. Gracias por tomarse el tiempo para informarnos sobre este problema en curso. Solo quería hacerles saber a todos que la prueba de expresiones regulares para este desafío se actualizó recientemente y que debería llevarse a producción pronto.

Aún obteniendo indicadores de expresión regular no válidos con:

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

@ mirkocoppola80 sí, no estoy seguro de la frecuencia con la que se fusionan / compilan. Sin embargo, no creo que hayan hecho uno desde el 30 de mayo, así que estamos esperando que los cambios surtan efecto.

Indicadores de expresión regular no válidos para hoy, esperando la actualización ...

Intento con mapa, bucles, etc., pero no encontré una solución. Puede verlo, tal vez haya encontrado una idea clave. https://www.youtube.com/watch?v=XzExdQye1Ls

@jsparadacelis Sigo el código de ese video, eso no funciona

Hola, también sigo recibiendo banderas de expresión regular no válidas con:

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

Todavía no funciona. ¿Podemos tener una luz aquí por favor?

Sí, todavía no puedo encontrar una solución que funcione para este desafío

Recibo un error de indicadores de expresión regular no válido .

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

También obtengo el error de banderas de expresión regular no válidas a continuación.
screen shot 2018-07-11 at 9 37 41 pm

Sigo recibiendo el error de indicadores de expresión regular no válidos .
https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/es6/create-strings-using-template-literals/

Lo probé con el mapa y todo y todavía obtengo banderas de expresión regular no válidas

Confirmado aún no funciona

Todavía no funciona, bastante frustrante

En este momento, ni el método MAP ni los enfoques más simples pero largos funcionan, el mismo error: "Indicadores de expresión regular no válidos" a pesar de que se pasaron las otras pruebas

Oye, si alguien encontró una manera, por favor dímelo, no puedo avanzar xD (sé que podría omitirlo pero oh mi TOC)

Todavía no me funciona.

Oye, solo soy otro tipo para escribir que todavía no funciona.

He visto que esto supuestamente está arreglado y aún no se ha implementado, pero quería publicarlo en caso de que necesite más información. He confirmado la salida correcta con console.log () sin embargo, mi solución no pasa la prueba "Se usaron cadenas de plantilla".
mi código:

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

salida de la consola:

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

Sigue sin funcionar. const resultDisplayArray = arr.map(num => '<li class="text-warning">${num}</li>');
// prueba de carrera
Indicadores de expresión regular no válidos
// pruebas completadas

El método de mapa aún no funciona. Con o sin devolución.

todavía esperando una solución

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

Obteniendo un resultado de marcas de expresión regular no vá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 no funcionan para mí, pensé que era mi código, pero parece que algo está roto

Intenté resolverlo hoy, pero todavía no funciona.

Lo he probado también con marcas de escape:

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

pero sigue siendo "Indicadores de expresión regular no válidos"

Yo también he intentado resolverlo, pero sigo obteniendo los mismos "indicadores de expresión regular no válidos" como resultado. Se están pasando 2 de las tres pruebas, pero sigo recibiendo el mensaje.

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

También usé un bucle for simple y obtuve el mismo resultado

¡Todavía no arreglado! 😢

Sí, lo he escrito como 4 formas y no funciona. está roto. simplemente omítalo y sigue adelante

Sigue sin funcionar..

El mismo problema;

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

devuelve el error "banderas de expresión regular no válidas"

Confirmar que aún no funciona.
Intenté forEach, for loop, map ... No tengo idea de qué está pasando con este desafío

Sí, todavía no funciona. Obteniendo el mismo error que todos los demás, "Indicadores de expresión regular no válidos".
Probé con mapa, forEach, etc.

¡Funciona! ¡Intento la misma solución con el mapa cada semana y ahora ha pasado! ¡Hurra!

¡Funcionó para mí también! :) No estaba trabajando ayer.

Confirmado ahora funciona con

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

Gracias por la solución.

Aleluya !! funciona

alleluia.finally funciona

esto debería funcionar sin la función de mapa, solo usando literales de plantilla normales, como esto enseñaría cómo se conserva el espacio sin agregar
etiquetas o & nbsp;

A continuación puede encontrar el código que funciona :):

resultado constante = {
éxito: ["longitud máxima", "no-amd", "prefiero-funciones-de-flecha"],
falla: ["no-var", "var-on-top", "linebreak"],
omitido: ["id-blacklist", "no-dup-keys"]
};
function makeList (arr) {
"uso estricto";

// cambia el código debajo de esta línea
const resultDisplayArray = [ <li class="text-warning">${arr[0]}</li> ,
<li class="text-warning">${arr[1]}</li> ,
<li class="text-warning">${arr[2]}</li> ];
// cambia el código por encima de esta línea

return resultDisplayArray;
}
/ **

  • makeList (result.failure) debería devolver:
  • [ <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);
¿Fue útil esta página
0 / 5 - 0 calificaciones