Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

86
Vistas
El método mecanografiado siempre devuelve una matriz anidada indefinida

Estoy tratando de escribir un método Typescript para un juego de buscaminas que mira si los vecinos de un campo son míos y obtengo el mismo error cada vez:

 Uncaught TypeError: Cannot read properties of undefined (reading '5')
 private getNeighbours(field: Field[][]): number[][]{ let mineNeighbours: number[][] = new Array(field.length) .fill(0) .map(() => new Array(field.length).fill(0)); for (let i = 0; i < field[0].length; i++){ for (let j = 0; j < field[1].length; j++){ for (let yOffset = -1; yOffset < 2; yOffset++){ for (let xOffset = -1; xOffset < 2; xOffset++){ if (!(i + yOffset < 0 || i + yOffset > field[0].length || j + xOffset < 0 || j + xOffset < field[1].length || xOffset == 0 || yOffset == 0)){ if (field[i + yOffset][j + xOffset] instanceof Mine){ mineNeighbours[i][j]++; } } } } } } return mineNeighbours; }

el error proviene de la línea donde compruebo si el campo actual es una instancia de Mine

Intenté depurarlo pensando que había pasado un agrumento indefinido pero ese no es el problema. Mi suposición es que hay algo mal en la oración if sobre la verificación de las minas. El método debe devolver una matriz int con el recuento de vecinos de cada campo.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Su error estará en su declaración if

 let validY = i + yOffset >= 0 || i + yOffset < field[0].length; let validX = j + xOffset >= 0 || j + xOffset < field[1].length; let isDifferentCell = xOffset !== 0 && yOffset !== 0; if( validY && validX && isDifferentCell ) { if (field[i + yOffset][j + xOffset] instanceof Mine){ // Also is there a reason why this needs to be checked can the field value not be an instance of Mine? I would remove this if its always going to be a Mine mineNeighbours[i][j]++; } }

Esto lo limpia un poco mejor para que sea más fácil de leer (grandes declaraciones if como esa pueden volverse confusas). Creo que su problema fue que estaba comprobando dos veces cada xey por separado. entonces era posible que el índice no fuera válido pero el otro no.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda