Quiero modificar los valores de la fila 50, el valor predeterminado es -1
let rowUp = table.pos[51] for (let i in rowUp){ process.stdout.write(rowUp[i].val+'') } process.stdout.write('\n') let rowSet = table.pos[50] for (let i in rowSet){ rowSet[i].val = 0 process.stdout.write(rowSet[i].val+'') } process.stdout.write('\n') let rowDn = table.pos[49] for (let i in rowDn){ process.stdout.write(rowDn[i].val+'') }Y el resultado es
-1-1-1-1-1-1-1-1-1-1
0000000000
0000000000
quiero que sea
-1-1-1-1-1-1-1-1-1-1
0000000000
-1-1-1-1-1-1-1-1-1-1
EDITAR
vi mi error aqui
const cellData = await new cellSchema() for (let posZ = 0; posZ < 100; posZ++) { let row = [] for (let posX = 0; posX < 100; posX++) { row[posX] = cellData } table.pos[posZ] = row }Necesita ser
for (let posZ = 0; posZ < 100; posZ++) { let row = [] for (let posX = 0; posX < 100; posX++){ const cellData = await new cellSchema() row[posX] = cellData } table.pos[posZ] = row }Sospecho que los nodos dentro de sus filas son todas referencias al mismo objeto. Entonces, cuando cambia el atributo val para uno de ellos, cambia para todos ellos.
Para solucionar esto de la manera correcta, debe asegurarse de crear copias para cada nodo al crear su tabla.
Para solucionar esto de una manera pirateada en el caso de su fragmento de código, esto es lo que puede hacer:
let rowUp = table.pos[51] for (let i in rowUp){ process.stdout.write(rowUp[i].val+'') } process.stdout.write('\n') let rowSet = table.pos[50] for (let i in rowSet){ rowSet[i] = { …rowSet[i], val: 0 } process.stdout.write(rowSet[i].val+'') } process.stdout.write('\n') let rowDn = table.pos[49] for (let i in rowDn){ process.stdout.write(rowDn[i].val+'') }Esto creará una copia cuando necesite desviarse del objeto de referencia común en su tabla.