Soy muy nuevo en javascript y recientemente aprendí sobre los bucles For. Tengo una variable que consiste en una matriz que contiene varios nombres y me gustaría agregar apellidos a cada uno de ellos. Escribí el código como se muestra a continuación y tengo algunas preguntas.
let name = ["john", "maria", "brandon", "gaby", "jessica", "angel"]; function addLastName(array) { for (let i = 0; i < array.length; i++) { console.log(name[i] + " (please insert last name)") } } console.log(addLastName(name))Resultado :
john (please insert last name) maria (please insert last name) brandon (please insert last name) gaby (please insert last name) jessica (please insert last name) angel (please insert last name) undefinedPreguntas:
Acerca de la segunda declaración para el ciclo. Corríjame si me equivoco, pero al usar la longitud en una matriz, mostrará la cantidad de datos dentro de la matriz, ¿verdad? Entonces, en este caso, nombre.longitud = 6. Pero según tengo entendido, al acceder a una parte de una matriz, el conteo siempre comienza en 0. Así que usé matriz.longitud-1. Pero el resultado no mostró "Ángel". Cuando usé array.length, el resultado mostró Angel. ¿Qué lógica me estoy perdiendo aquí?
cuando pongo el resultado en la consola, siempre hay un "indefinido" al final, ya sea que use array.length o array.length-1. ¿Alguien puede decirme por qué apareció?
Para tu primera pregunta:
Dentro del bucle for, si se parte de 0, y la condición es i < array.length y la longitud del array es 6, irá de 0 a 5, y cuando llegue a 6 no respetará la condición (6 < 6 false ) por lo que saldrá del bucle for antes de ejecutar el bloque interno (pero cuando salga del for i seré 6).
Para tu segunda pregunta:
No debe llamar a console.log(addLastName(name)) porque addLastName ya se registra en la console . Ese console.log es el que imprime undefined ya que imprimirá el resultado de la función, que por defecto es undefined si no devuelves nada dentro de la función.