Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

115
Visualizações
Compara dos matrices de objetos en Javascript

Tengo una lista de coordenadas de cuadrados de una cuadrícula: Cuadrícula

Cada cuadrado está definido por una clase:

 class Square { constructor(x, y) { this.x = x; this.y = y; } }

Así es como funciona la aplicación: primero se muestra una lista de cuadrados generados aleatoriamente, y luego el usuario tiene que hacer clic en los cuadrados de la memoria. (No necesariamente en orden)

Un ejemplo de cómo sería la matriz de preguntas/respuestas: (solo un ejemplo, en realidad se generan aleatoriamente)

 const arr = [new Square(1, 1), new Square(2, 1)]

ahora, cada vez que el usuario hace clic en un cuadro, entra en otra matriz:

 var selectedBlocks = [new Square(2, 1), new Square(1, 1)]

En este caso, dado que los cuadrados seleccionados son iguales, la función debería devolver verdadero.

Lo que he intentado: no puedo obtenerlo sin un bucle doble O (n ^ 2). ¿Es posible optimizar para al menos O (n)?

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Puede usar Array.some para encontrar el elemento ya seleccionado o no

 class Square { constructor(x, y) { this.x = x; this.y = y; } } const arr = [new Square(1, 1), new Square(2, 1)]; const selectedBlocks = [new Square(2, 1), new Square(1, 1)]; const isSelected = (block) => { return selectedBlocks.some( (item) => item.x === block.x && item.y === block.y ); }; console.log(isSelected(new Square(2, 1))); console.log(isSelected(new Square(2, 2))); console.log(isSelected(new Square(1, 1)));

about 4 years ago · Juan Pablo Isaza Relatório

0

Olvidé que había pocos métodos integrados y escribí esto, supongo (nlogn) Código de complejidad de tiempo

 class Square { constructor(x, y) { this.x = x; this.y = y; } pri(){ return this.x + this.y; } } let inp = [new Square(2,1), new Square(2,3), new Square(1,3)] let opt = [new Square(1,3), new Square(2,1), new Square(2,3)] inp.sort((a, b) => { return a.pri() - b.pri(); }); opt.sort((a, b) => { return a.pri() - b.pri(); }); // assuminng they are of same len let flag = true for(i=0; i<inp.length ; i++){ if(inp[i].x != opt[i].x || inp[i].y != opt[i].y){ flag = false break } } console.log(flag)
about 4 years ago · Juan Pablo Isaza Relatório

0

Citando la respuesta a otra pregunta , las respuestas a esa también pueden ayudar. Si solo necesita saber si A y B tienen las mismas entradas, simplemente use

 JSON.stringify(A.concat().sort()) === JSON.stringify(B.concat().sort())

El enlace a la respuesta original está aquí .

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda