const howLong = 5 let special = [ "!", "@", "#", "$", "%", "+", "&",]; let finalPassword = [] for (let i = 0; i < howLong; i++) { finalPassword += special[Math.floor(Math.random() * howLong)].push }la consola imprime 5x indefinidos, mi objetivo es hacer que copie 5 caracteres aleatorios de la matriz "especial" en una nueva var "finalPassword"
debe eliminar la llamada .push
const howLong = 5; let special = [ "!", "@", "#", "$", "%", "+", "&",]; let finalPassword = ""; for (let i = 0; i < howLong; i++) { finalPassword += special[Math.floor(Math.random() * howLong)] }Dependiendo de cuáles sean sus requisitos de salida esperados, puede concatenar caracteres "especiales" en una cadena:
const howLong = 5; let special=["!","@","#","$","%","+","&"]; let finalPassword = ''; for (let i = 0; i < howLong; i++) { const rnd = Math.floor(Math.random() * howLong); finalPassword += special[rnd]; } console.log(finalPassword); ... o puede insertar esos caracteres "especiales" en una matriz (y luego tal vez join esa matriz de elementos en una cadena).
const howLong = 5; let special=["!","@","#","$","%","+","&"]; let finalPassword = []; for (let i = 0; i < howLong; i++) { const rnd = Math.floor(Math.random() * howLong); finalPassword.push(special[rnd]); } console.log(finalPassword); console.log(finalPassword.join(''));Pero no puedes hacer ambas operaciones al mismo tiempo.
En la iteración del bucle for, genere un índice aleatorio y luego acceda a la matriz especial en ese índice para obtener el carácter especial.
const howLong = 5; let special = [ "!", "@", "#", "$", "%", "+", "&",]; let finalPassword = [] for (let i = 0; i < howLong; i++) { const currentRandom = Math.floor(Math.random() * howLong); finalPassword.push(special[currentRandom]); } console.log(finalPassword);