Tengo este código para ensamblar una matriz a partir de otra matriz. Pero no estoy seguro de por qué SOLO copia el último valor (Valor: 4).
function test1() { var a = []; var b = [{"Value": 0}]; for (let i = 0; i < 5; i++) { b[0].Value = i; a = a.concat(b); console.log(a) } }Creo que estoy haciendo esto:
El problema es el resultado, en el primer ciclo (i=0) ya devolvió:
a[0]: {Value: 4}Y en el último ciclo, todos los valores son 4:
a: { a[0]: {Value: 4}, a[1]: {Value: 4}, a[2]: {Value: 4}, a[3]: {Value: 4}, a[4]: {Value: 4} }Quería que el resultado fuera:
a: { a[0]: {Value: 0}, a[1]: {Value: 1}, a[2]: {Value: 2}, a[3]: {Value: 3}, a[4]: {Value: 4} }¿Cómo logro este resultado?
Para qué estoy haciendo con esto, estoy haciendo un sitio web, usando javascript para:
No sé si mi explicación es lo suficientemente fácil de entender y si hay una mejor manera de hacerlo.
Estás actualizando el mismo objeto b y concatenándolo. Puede crear un nuevo objeto para concatenar cada vez.
function test1() { var a = []; for (let i = 0; i < 5; i++) { a = a.concat([{"Value": i}]); console.log(a) } }Para cada iteración, b apunta a la misma referencia de objeto y es esa referencia la que se agrega a la matriz cada vez. Mueva la declaración de b dentro del ciclo para que esté creando un nuevo objeto cada vez.
function test1() { let a = []; for (let i = 0; i < 5; i++) { const b = [{ value: i }]; a = a.concat(b); } return a; } console.log(test1());