Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

322
Visualizações
¿La función JavaScript Array forEach no funciona?

Intenté hacer algunos cambios en el código javascript de la escuela W33 para conocer la diferencia entre forEach y map. ¿Alguien puede decirme por qué el resultado de este código sigue siendo:

45,4,9,16,25

en vez de

90,8,18,32,50

¿No es forEach significa llamar a una función para cada elemento de esta matriz? Sé que no debería usar return porque forEach no devuelve un resultado válido.

 const numbers = [45, 4, 9, 16, 25]; numbers.forEach(myFunction); document.getElementById("demo").innerHTML = numbers; function myFunction(value, index, array) { value * 2; }
 <!DOCTYPE html> <html> <body> <h2>JavaScript Array.forEach()</h2> <p>Calls a function once for each array element.</p> <p id="demo"></p> </body> </html>

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

El value * 2 realiza un cálculo, pero no hace nada con el resultado de ese cálculo. Podría cambiar la línea a value = value * 2 y eso asignaría el resultado del cálculo a la variable de value . Sin embargo, eso aún no cambiaría los valores en la matriz, porque la variable de value está restringida al alcance de la función.

Esto se debe a que cuando transfiere un número a otra variable, solo está transfiriendo el valor , no la referencia. es decir

 let a = 1; let b = a; a = 2; // a is 2, b is 1

Esto es diferente a las matrices y los objetos, donde se transfiere la referencia:

 let a = [1]; let b = a; a[0] = 2; // a[0] is 2, b[0] is 2

Entonces, una forma de arreglar su código podría ser manipular la matriz en su lugar, es decir

 const numbers = [45, 4, 9, 16, 25]; numbers.forEach(myFunction); function myFunction(value, index, array) { array[index] = value * 2; } // numbers is [90,8,18,32,50]

Esto funciona. Sin embargo, recomendaría la simplicidad de map en lugar de forEach . Array#map usa el valor de retorno de cada llamada de función para reemplazar cada elemento en la matriz.

 const numbers = [45, 4, 9, 16, 25]; const doubles = numbers.map(myFunction); function myFunction(value, index, array) { return value * 2; } // numbers is [45,4,9,16,25] // doubles is [90,8,18,32,50]
about 4 years ago · Juan Pablo Isaza Relatório

0

La función myFunction básicamente no hace nada, duplica el valor actual y no hace nada con él. En su caso, necesita mutar la matriz. Pero no es una buena idea mutar la matriz que está atravesando.

Para lograr su objetivo, recomiendo crear una nueva matriz utilizando la función de map .

 const numbers = [45, 4, 9, 16, 25]; const doubledNumbers = numbers.map((value) => val * 2); // [90, 8, 18, 32, 50] document.getElementById("demo").innerHTML = doubledNumbers;
about 4 years ago · Juan Pablo Isaza Relatório

0

Esto se debe a que no está restableciendo el valor de los números con el valor multiplicado.

Debe configurarlo de acuerdo con los numbers[index] dentro de la función de mapa.

 const numbers = [45, 4, 9, 16, 25]; numbers.forEach(myFunction); document.getElementById("demo").innerHTML = numbers; function myFunction(value, index, array) { numbers[index] = value * 2; }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda