La función bitGraph.dfs() devuelve una matriz de cadenas, con un formato de 'i,j' . La matriz termina con columnas de unos y ceros. El objetivo es tener los índices analizados a partir de las cadenas de la matriz asignada a unos.
Revisé el depurador y la línea result[x][y] = 1 no se ejecuta con cada iteración forEach , sino que asigna un 1 a cada elemento de la columna y de la matriz al final de forEach .
const result = Array(N).fill(Array(M).fill(0));Dentro de un bucle for:
bitGraph.dfs(`${N - 1},${j}`, visited) .forEach(node => { const [x, y] = node.split(',') .map(index => Number(index)); result[x][y] = 1; });Ejemplo:
returned array: ['5,0', '4,0', '1,5', '1,4', '1,3'] result: [ [ 1, 0, 0, 1, 1, 1 ], [ 1, 0, 0, 1, 1, 1 ], [ 1, 0, 0, 1, 1, 1 ], [ 1, 0, 0, 1, 1, 1 ], [ 1, 0, 0, 1, 1, 1 ], [ 1, 0, 0, 1, 1, 1 ] ]Su
const result = Array(N).fill(Array(M).fill(0)); crea una matriz llena de N copias de una única Array(M).fill(0) .
Por lo tanto, modificar cualquiera de esas N copias parece modificarlas todas:
> const result = Array(3).fill(Array(4).fill("hello")); (3) [Array(4), Array(4), Array(4)] 0: (4) ['hello', 'hello', 'hello', 'hello'] 1: (4) ['hello', 'hello', 'hello', 'hello'] 2: (4) ['hello', 'hello', 'hello', 'hello'] > result[0] === result[1] true # same object! > result[0][2] = "zoop" 'zoop' > result (3) [Array(4), Array(4), Array(4)] 0: (4) ['hello', 'hello', 'zoop', 'hello'] 1: (4) ['hello', 'hello', 'zoop', 'hello'] 2: (4) ['hello', 'hello', 'zoop', 'hello']Necesitarás algo como
const result = Array(N).fill(0).map(_ => Array(M).fill(0)); es decir, llene la matriz con N ceros, luego reemplácelos con nuevas matrices únicas de longitud M. (No puede simplemente usar .map sin .fill , ya que la matriz está llena de objetos empty que no están mapeados).
Voila:
> const result = Array(3).fill(0).map(_ => Array(4).fill("hello")); > result[0] === result[1] false > result[0][2] = "zoop" 'zoop' > result (3) [Array(4), Array(4), Array(4)] 0: (4) ['hello', 'hello', 'zoop', 'hello'] 1: (4) ['hello', 'hello', 'hello', 'hello'] 2: (4) ['hello', 'hello', 'hello', 'hello']