1
respuesta

Cuál es el rol de esta declaración?

Me quedó la duda de cuál es el rol exacto de esta declaración? : while (i < datos.length && ciudadSeleccionada == '')

Creo que la traducción vendría a ser "mientras que i sea menor que la cantidad de datos y la ciudad Seleccionada esté vacío"? En ese caso, como no está vacío, por eso salta directamente al else y arroja el mensaje de que se puede comprar el pasaje? Adjunto el resto del código a continuación.

const presupuestoDisponible = 400;
let i = 0;
let ciudadSeleccionada = '';

do { 
    if (datos[i].precio <= presupuestoDisponible ) {
       ciudadSeleccionada = datos[i].ciudad;
    }
    i++;
} while (i < datos.length && ciudadSeleccionada == '')
if (ciudadSeleccionada=="") {
    console.log("No tenemos pasajes disponibles");
} else {
    console.log("Puedes comprar pasaje para: "+ciudadSeleccionada);
}
1 respuesta

Hola, así es, el bucle vuelve a ejecutarse mientras las dos condiciones se cumplan, en el caso de que una de ellos de falso, el bucle se rompe y salta a la siguiente línea, que en este caso sería el if o el else y estos validan sus condiciones a la vez ejecutaran la línea de código que contienen de acuerdo a los datos obtenido mediante el bucle anterior.

Al código de este ejercicio le falta algunos reajustes, puesto que podemos obtener varias ciudades seleccionadas al indicarle un presupuesto por encima del valor del precio establecido de cada ciudad.

Te muestro una mejora al código:

let ciudadesSeleccionadas=[];
do{
    if(datos[i].precio<=presupuestoDisponible){
        ciudadesSeleccionadas.push(datos[i].ciudad);
    }
    i++;
}while(i<datos.length)
if(ciudadesSeleccionadas.length>0){
    console.log("Puedes comprar pasaje para: "+ciudadesSeleccionadas.join(', '));
}else{
    console.log("No tenemos pasajes disponibles que se ajusten a tu presupuesto.");
}

Espero que te pueda servir, saludos.