Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

[Duda] Ingredientes que no se repiten ¿Cómo seria usando for of?

Este código me funciona pero tengo activado la extencion sonarLint de vs code

<meta charset="UTF-8">

<h1>Recetas de Armando</h1>

<script>

    var ingredientes = [];
    var cantidad = parseInt(prompt("¿Cuántos ingredientes vas a añadir?"));
    var contador = 1;

    while( contador <= cantidad) {
        var encontrado = false;
        var ingrediente = prompt("Informe el ingrediente " + contador);
        for ( var i = 0; i < ingredientes.length; i++ ) {
            if ( ingrediente == ingredientes[i] ) {
                encontrado = true;
                break;
            }
        }

        if ( !encontrado ) {
            ingredientes.push(ingrediente);
            contador++;
        }
    }

    console.log(ingredientes);

</script>

Me dice que se puede usar un "for - of"

la pregunta seria ¿Cómo?

2 respuestas
solución!

Yo no conocía esa extensión, gracias por el aporte Toño.

Respecto a tu duda, la sugerencia es para con este bloque:

for ( var i = 0; i < ingredientes.length; i++ ) {
    if ( ingrediente == ingredientes[i] ) {
        encontrado = true;
        break;
    }
}

Fíjate que es un bucle que recorre un arreglo, y luego comparas si algún ingrediente ya ingresado concuerda con el que quieres añadir. A pesar de que ese código es funcional, la recomendación te la da ya que JavaScript tiene mejores formas de realizar ese tipo de validaciones, una es con For of.

for (const unIngrediente of ingredientes) {
    if (ingrediente == unIngrediente) {
        encontrado = true;
        break;
    }
}

En el código de arriba puedes observar cómo sería ese mismo bloque pero usando en lugar de For tradicional, un For Of. Puedes revisar cómo funciona este ciclo en el siguiente enlace: For...of.

Como sea, existen otras maneras de solucionar esto, una más podría ser con For...Each que recorre un arreglo; sería algo como esto:

ingredientes.forEach(unIngrediente => {
    if (ingrediente == unIngrediente) {
        encontrado = true;
    }
});

Puedes aprender más sobre este método aquí: For...Each.

Saludos!

Muchas gracias !!! revisare lo que me sugiere