Aquí está mi código. Quiero sacar elementos pares. Pero todo lo que puedo sacar es 4 4 4 4 4 .
function f6() { let out = ''; let a6 = [[1, 2], [3, 4], [5, 6], [21, 34], [44, 56]]; for (let i = 0; i < a6.length; i++) { for (let i = 0; i < a6[i].length; i++) { if (a6[i][i] % 2 == 0) { out += a6[i][i] + ' '; } } } console.log(out); } document.querySelector('button').onclick = f6; <button>Push!</button>¿Por qué?
Has usado el mismo nombre de variable, i , dos veces. Declarar let i dentro de su ciclo interno le impide acceder a let i desde su ciclo externo. Si usa un nombre de variable diferente para iterar a través de cada bucle, por ejemplo, j , entonces debería estar bien.
Si solo necesita usar el índice para acceder a los valores en ese índice, entonces puede probar un bucle for...of para evitar este problema por completo, por ejemplo:
const data = ... // 2D array for (let row of data) { for (let cell of row) { // Use cell here } }Su variable de marcador de posición i está sombreada por la segunda iteración, por lo tanto, es posible que desee usar otro marcador de posición como j para tener la referencia correcta al elemento.
function f6() { let out = ''; let a6 = [[1, 2], [3, 4], [5, 6], [21, 34], [44, 56]]; for (let i = 0; i < a6.length; i++) { for (let j = 0; j < a6[j].length; j++) { if (a6[i][j] % 2 == 0) { out += a6[i][j] + ' '; } } } console.log(out); } document.querySelector('button').onclick = f6; <button>Push!</button>