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

161
Vistas
¿Por qué mi matriz collRect no obtiene elementos?

Me uní recientemente a un curso fullstack. Va muy bien hasta ahora (aunque es muy difícil), incluso en JS donde solía estar atascado mucho... Bueno, eso es lo que pensé, ahora mismo estoy totalmente perdido en un ejercicio.

¿Alguien puede revisar este violín y decirme dónde está mi (s) error (es)?

El objetivo del ejercicio es hacer una clase (rectángulo), un método para verificar la colisión (está bien), la parte donde tengo un problema es donde necesito verificar la colisión de 1000 rectángulos de tamaños aleatorios, sus creaciones están bien pero el cheque es donde estoy atascado.

 let randomRect = []; let collRect = []; function colCheck(n) { for (let i = 0; i < n; i++) { randomRect[i] = Rectangle; Rectangle = {}; Rectangle.name = "Rectangle " + i; Rectangle.topLeftXPos = Math.floor(Math.random() * 10); Rectangle.topLeftYPos = Math.floor(Math.random() * 10); Rectangle.width = Math.floor(Math.random() * 10); Rectangle.length = Math.floor(Math.random() * 10); randomRect.push(Rectangle); } for (let j = 0; j > n; j--) { if (randomRect[i].collides(randomRect[j])) { collRect.push(Rectangle); console.log("Collision detected") } } } colCheck(1000); console.log(collRect);

El método de colisión está en jsfiddle. Lo siento si cometí algunos errores ortográficos.

Aquí está mi violín: https://jsfiddle.net/ou5wyrp8/3/

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

0

Hola, comencé a hacer algunas ediciones para empujarte en la dirección correcta. Su primer error fue la forma en que intenta usar una clase. Al crear objetos a partir de clases, desea utilizar la new palabra clave, el nombre de la clase y luego tratar el nombre de la clase como una función. Tenga en cuenta que la función que se ejecuta cuando se usa new es el constructor, por ejemplo

 let newRect = new Rectangle(topLeftXPos, topLeftYPos, width, length)

A continuación, hubo problemas en su bucle for. Para empezar, supuse que quería que el bucle j estuviera anidado dentro del bucle i, lo cual no fue así.

Fui tan lejos para arreglar estas dos cosas. Todo lo que queda es que randomRect y empujes las colisiones para collRect

 class Rectangle { constructor(topLeftXPos, topLeftYPos, width, length) { this.topLeftXPos = topLeftXPos; this.topLeftYPos = topLeftYPos; this.width = width; this.length = length; } collides(otherRectangle) { if (this.topLeftXPos === otherRectangle.topLeftXPos) { return true; } else if (this.topLeftYPos === otherRectangle.topLeftYPos) { return true; } else { return false; } } } let randomRect = []; let collRect = []; function colCheck(n) { for (let i = 0; i < n; i++) { //populate randomRect let newRectangle = new Rectangle( //top Math.floor(Math.random() * 10), //left Math.floor(Math.random() * 10), //width Math.floor(Math.random() * 10), //length Math.floor(Math.random() * 10)) randomRect.push(newRectangle); } console.log(randomRect) for( let i = 0; i <n;i++){ for (let j = n-1; j > 0; j--) { if (randomRect[i].collides(randomRect[j])) { collRect.push(randomRect[i]); console.log("Collisaaaion detected") } } } } colCheck(1000); console.log(collRect);
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