Solucionado (ver solución)
Solucionado
(ver solución)
8
respuestas

Duda sobre ingredientes repetidos minúsculas/mayúsculas

Mi consulta es como puedo hacer para que me reconozca las minúsculas ya que si ingreso "pan" y "Pan" los toma como dos diferentes y me ingresa ambos ingredientes.

<meta charset="UTF-8">

<h1>Recetas de Armando</h1>

<script>
//Cambia el código para que no se puedan agregar los ingredientes repetidos.
    function imprimir(frase) {
        document.write(frase);
    }
    var ingredientes = [];
    var cantidad = parseInt(prompt("¿Cuántos ingredientes vas a añadir?"));
    var contador = 1;

    while(contador <= cantidad) {
        var ingrediente = prompt("Informe el ingrediente " + contador);
        var esta = false;
        for (var posicion = 0; posicion <= ingredientes.length; posicion++){
            if (ingrediente == ingredientes[posicion]){
                esta = true;
                alert(ingrediente+ " Esta repetido.");
                break;
            }
        }
            if (esta == false){
                ingredientes.push(ingrediente);
                contador++;
                }
    }

    console.log(ingredientes);
    imprimir("Los ingredientes para la receta son: " + ingredientes);

</script>
8 respuestas
solución!

Hola brian... lo que podes hace es despues de esta linea

var ingrediente = prompt("Informe el ingrediente " + contador);

colocar esta otra

ingrediente = ingrediente.toLowerCase
o
ingrediente = ingrediente.toUpperCase

asi te transforma tu palabra a minúsculas y si ingresas pan y después Pan las va a tomar a las dos como pan probalo, y fijate si así funciona

Hola, existen unas funciones que sirven para convertir strings a mayúsculas o minúsculas, lo que podrías hacer es utilizarlas antes de realizar la comparación de ingredientes, así lo toma como que son lo mismo. Para convertir a minúsculas se utiliza:

toLowercase()

Y para convertir a mayúsculas:

toUpperCase()

Yo tenia la misma duda, después de ver la respuesta de Gianni coloque el toLowerCase al final del prompt y funciono perfecto.

var ingrediente = prompt("Informe el ingrediente " + contador).toLowerCase();

Gracias Gianni y Natalia, lo modifique como dijeron y ahora si funciona mejor!

while(contador <= cantidad) {
        var ingrediente = prompt("Informe el ingrediente " + contador);
        ingrediente = ingrediente.toLowerCase();
        var esta = false;
        for (var posicion = 0; posicion <= ingredientes.length; posicion++){
            if (ingrediente == ingredientes[posicion]){
                esta = true;
                alert(ingrediente+ " Esta repetido.")
                break;
            }
        }
            if (esta == false){
                ingredientes.push(ingrediente);
                contador++;
                }
    }

Hola Brian! Como estas? Si, tal cual te dijeron mis compañeros, con la función "variable = variable.toLowerCase" (si quieres convertirlo a minúsculas) o "variable = variable.toUpperCase" si es que quieres que se conviertan en mayúsculas. Saludos y a seguir programando!

if (ingrediente[posicion] == ingredientes);

Hola, ¿cómo están?. Una pregunta no entiendo por qué ingredientes está junto posición y está encerrado en [ ] no se en que parte me perdi.

Mateo fíjate que en el if es (ingrediente == ingredientes[posicion]), ya que ingredientes es una colección que tiene varias variables guardadas dentro, entonces se usa el variable posicion entre [], para acceder a la variable guardada dentro de ingredientes en el índice que coincide con posicion.

ejemplo:

//pan es el índice 0, leche el 1, miel el 2, chocolate el 3.
ingredientes = [pan, leche, miel, chocolate];
posicion = 1;

alert(ingredientes[posicion]) // te va a devolver leche

posicion = 0;

alert(ingredientes[posicion]) //te va a devolver pan  
alert(ingredientes[0]) //te va a devolver pan. Podes usar el índice sin la variable si quieres y sabes el que necesitas.

posicion = 4
alert(ingredientes[posicion])//te va a dar error ya que en este caso la colección no tiene índice 4

Perdón al resto pero para no dejarlo con la duda a Mateo y al ver que no publico la consulta en otro lado, le respondo por acá.

Hola

Quería aportarles con una acotación.

Se debe escribir toLowerCase(); Teniendo en consideración que la L y C son en mayusculas para que la función se aplique.

Espero haber aportado mi granito de arena. Saludos,