Bruno R
Los bucles (looping) son un concepto utilizado en programacion para referise a hacer una misma tarea varias veces, cada vez que temina un bucle se dice que se realizo una iteracion (si se repite el mismo bucle 40 veces por ejemplo, esto seria lo mismo que decir que el bucle itero 40 veces)
Los bucles suelen tener una de las siguientes caracteristicas ⇒
en pseudocodigo seria algo asi ⇒
loop(food = 0; foodNeeded = 10) { // la primer sentencia seria el contador con un valor de inicio y la segunda sentencia seria la condicional de hasta que numero necesito que llegue el contador para que no se repita if (food >= foodNeeded) { //esta es una condicion q cuando el contador sea igual o mayor que la condicional ejecuta el codigo del if exit loop; // We have enough food; let's go home } else { //y aca hay algo re interesante, el iterador que aumenta el valor del contador esta en un else, no necesariamente tiene que esta en los parentesis del loop food += 2; // Spend an hour collecting 2 more food // loop will then run again } }
Bucle for ⇒
for (initializer; condition; final-expression) { // code to run }
const cats = ['Bill', 'Jeff', 'Pete', 'Biggles', 'Jasmin']; //un array con distintos valores let info = 'My cats are called '; // una variable string const para = document.querySelector('p'); //un selector de parrafor para colocar la info seguro /*abajo el bucle basicamente esta creando una variable, esta variable no puede ser mayor que el numero de elementos del array, y se incrementa en 1 por cada iteracion. luego hay un operador de asignacion que agregara al string cada uno de los elementos del array en cada iteracion + una coma*/ for (let i = 0; i < cats.length; i++) { info += cats[i] + ', '; } //como resultado sera un string en la variable info donde se sumaron todos los elementos //del array a la variable. para.textContent = info;
Como añadidura se puede corregir el string que termina con una "," y un espacio usando condicionales ⇒
for (let i = 0; i < cats.length; i++) { //esto va a iterar igual que antes if (i === cats.length - 1) { // si i es identico al numero de elementos del array -1 info += 'and ' + cats[i] + '.'; //se concatena esto para que quede re tull } else { info += cats[i] + ', '; // este else se va a ejecutar todas las iteraciones menos la ultima } //lo mismo que el ejemplo anterior. } // output => "Mis gatos se llaman Bill, Jeff, Pete, Biggles and Jasmin."
<label for="search">Search by contact name: </label> <input id="search" type="text"> <button>Search</button> <p></p>
const contacts = ['Chris:2232322', 'Sarah:3453456', 'Bill:7654322', 'Mary:9998769', 'Dianne:9384975']; const para = document.querySelector('p'); const input = document.querySelector('input'); const btn = document.querySelector('button'); btn.addEventListener('click', function() { let searchName = input.value.toLowerCase(); input.value = ''; input.focus(); for (let i = 0; i < contacts.length; i++) { let splitContact = contacts[i].split(':'); if (splitContact[0].toLowerCase() === searchName) { para.textContent = splitContact[0] + '\'s number is ' + splitContact[1] + '.'; break; //mas abajo voy a tratar de desglosar la importancia del break aca. } else if (i === contacts.length - 1) { para.textContent = 'Contact not found.'; } } });
continue funciona de manera similar a break pero en lugar de salir del bucle, este salta a la proxima iteracion.
let num = input.value; //creando variable for (let i = 1; i <= num; i++) { //se repite el numero que coloquemos en el input de la variable let sqRoot = Math.sqrt(i); //variable que toma el valor de la raiz cuadrada de i del bucle if (Math.floor(sqRoot) !== sqRoot) { //si el redondeo de la raiz cuadrada es diferente a la raiz cuadrada saltara la iteracion, osea el bucle seguira con el proximo valor de i continue; } //en el caso de que no se cumpla esta condicion saltamos a agregar la informacion de i al parrafo para.textContent += i + ' '; } //esto me va a mostrar todos los valores que tengan raiz cuadrada hasta llegar al numero que coloque en el input
while loop tiene las mismas caracteristicas que el bucle for pero estan dispuestas de manera distinta ⇒
let i = 0; //la variable inicializadora se encuentra fuera del bucle while (i < cats.length) { //dentro de los parentesis esta solo la condicion para que se siga ejecutando o no el bucle if (i === cats.length - 1) { info += 'and ' + cats[i] + '.'; //el bloque del codigo normal que se ejecuta si se cumple la condicion del bucle } else { info += cats[i] + ', '; } i++; //y el incrementador esta dentro del bloque del bucle pero en la ultima linea } //este le da info a la variable que se encuentra en la condicional para saber si se repite o no el codigo.
Luego el bucle do...while proporciona una variacion al bucle while ⇒
let i = 0; //inicializador fuera del bucle do { //palabra calave do que inicia el bloque de codigo abajo if (i === cats.length - 1) { info += 'and ' + cats[i] + '.'; //este bloque si o si corre al menos una vez } else { info += cats[i] + ', '; } i++; //este incrementador tambien se va a iniciar al menos una vez por estar dentro de do } while (i < cats.length); //la condicion corre a lo ultimo de la iteracion