Estoy trabajando con la siguiente matriz de objetos y estoy tratando de ejecutar una función con forEach. Sin embargo, no quiero destruir el tbl1 original. Por lo tanto, hice una copia de tbl1 en tbl2 y estoy ejecutando forEach en tbl2 .
Lo que me sorprende, si ejecuto un forEach en tbl2 para poder conservar la estructura tbl1 , también ocurre en tbl1 que no quiero.
const tbl1 = [{ "Month": 1, "Value": 100 }, { "Month": 2, "Value": 200 }, { "Month": 3, "Value": 300 }] const tbl2 = tbl1; tbl2.forEach( (d)=>{d.newCol=d.Month*152;}); console.log(tbl1,tbl2); ¿Es posible ejecutar forEach en una tabla de copy sin destruir la tabla de source ?
Eso es porque cuando escribes const tbl2 = tbl1; , no clona la matriz, sino que toma una referencia al original. Entonces, cuando modifica la referencia, el original también se modifica.
puedes usar map
const tbl1 = [{ "Month": 1, "Value": 100 }, { "Month": 2, "Value": 200 }, { "Month": 3, "Value": 300 }] const tbl2 = tbl1.map(d => { return { ...d, newCol: d.Month*152 } }) console.log(tbl1,tbl2);JSON.parse y JSON.stringify const tbl1 = [{ "Month": 1, "Value": 100 }, { "Month": 2, "Value": 200 }, { "Month": 3, "Value": 300 }] const tbl2 = JSON.parse(JSON.stringify(tbl1)); tbl2.forEach( (d)=>{d.newCol=d.Month*152;}); console.log(tbl1,tbl2);