[Foso de escalada] Problemas encontrados al crear arreglos bidimensionales en JavaScript

1. Descripción del problema

Al hacer problemas de leetcode, primero usé el siguiente fragmento de código para crear una matriz bidimensional:

let arr = nuevo Array(m).fill(nuevo Array(n).fill(0))

No hay problema con los resultados impresos, pero necesito asignar valores a los elementos y descubro que algunos casos de prueba no pueden pasar.Después de imprimir el arr generado final, descubrí que muchos elementos se han incrementado varias veces.

2. Análisis de causas

El método anterior crea una referencia a una matriz que contiene n elementos, y cada elemento de esta matriz se llena con 0. Cuando el método de relleno llena esta matriz en la matriz externa, simplemente copia una referencia a la matriz en cada ubicación. Esto significa que cuando cambiamos un elemento, este cambio se refleja en todas las filas, ya que todas comparten la misma referencia de matriz interna.

3. Resuelve

  • Cree una matriz bidimensional de la siguiente manera:

let arr = nuevo Array(m).fill(0).map(() => new Array(n).fill(0))

Este enfoque utiliza dos operadores: relleno y mapa. Primero, new Array(m) crea una nueva matriz con m elementos, cada uno de los cuales no está definido. Luego, cada elemento se llena con 0 usando fill(0). Luego, use map(() => new Array(n).fill(0)) para mapear cada elemento de la matriz en una nueva matriz de n elementos, cada uno de los cuales es 0. De esta forma, obtenemos un arreglo bidimensional con m filas y n columnas.

Supongo que te gusta

Origin blog.csdn.net/weixin_44109827/article/details/129377539
Recomendado
Clasificación