Por favor, ayuda aquí. Quiero imprimir en la consola todos los elementos de la matriz con la condición de que no sean números y no comiencen con la letra "A".
Creo que el problema es donde poner el i += 1; pero en realidad cuando estoy cambiando su posición, la salida no es lo que necesito.
Intenté hacerlo con for y todo salió bien, pero no sé cuál es el problema con while.
Aquí está el código:
let friends = ["Ahmed", "Sayed", "Ali", 1, 2, "Mahmoud", "Amany"]; let i = 0; while (i < friends.length) { if (friends[i][0] === "A" || typeof friends[i] === "number") { continue; } console.log(friends[i]); i += 1; }Intenté usar while para hacer lo que dije anteriormente.
Como ya tiene una matriz, un mejor enfoque para esto sería simplemente recorrerla. De esa manera podrías evitar el ciclo while por completo.
let friends = ["Ahmed", "Sayed", "Ali", 1, 2, "Mahmoud", "Amany"]; const filteredFriends = friends.filter(friend => friend[0] !== 'A' && typeof friend !== 'number'); console.log(filteredFriends);documentación para filtro ()
La razón por la que estaba obteniendo un bucle infinito es por la declaración de continue dentro de if . Eso omite el resto del código para esa iteración y i += 1 no se ejecuta.
Cuando continue , no incrementa i , por lo que en la próxima iteración i permanece igual.
Siempre puede usar for ... of para eliminar la necesidad de incrementar manualmente i
let friends = ["Ahmed", "Sayed", "Ali", 1, 2, "Mahmoud", "Amany"]; for (const friend of friends) { if (typeof friend === "number" || friend[0] === "A") { continue; } console.log(friend); }Debe aumentar i cada vez que realiza un ciclo o su condición while nunca se resolverá (a menos que todos cumplan con su condición).
while (i < friends.length) { if (friends[i][0] !== "A" && typeof friends[i] !== "number") { console.log(friends[i]); } i += 1; }* Cambié la condición para buscar el resultado deseado en lugar del negativo (solo una preferencia personal).