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

186
Vistas
¿Cómo optimizar el mecanografiado anidado para el bucle de O (n ^ 2) a O (n) o similar?

Tengo dos matrices de objetos, a saber, arr1 y arr2 suponiendo que la longitud de ambos sea igual. Ambos tienen {id: 'some random id', ...} estructura interna. Quiero iterar a través de cada objeto en arr1 y agregar un parámetro checked=false si la id de ese objeto no pertenecía a arr2 de lo contrario, agregue un checked=true .

Aquí está mi código actual:

 for (const i of arr1) { i.checked = false; for (const j of arr2) { if (i.id === j.id) { i.checked = true; } } }

¿Cómo lo optimizo? Se agradece cualquier sugerencia menor que O (n ^ 2).

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

0

Puede crear un conjunto, tienen acceso O (1) haciendo que su ciclo sea O (n)

 const idSet = new Set(arr2.map(i => i.id)) for (const i of arr1) { i.checked = idSet.has(i.id); }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede usar Set para preparar ID de la segunda matriz y luego usar Set.prototype.has que tiene la operación O(1).

 const arr1 = [{id: 1}, {id: 2}, {id: 3}, {id: 4}] const arr2 = [{id: 2}, {id: 5}, {id: 4}, {id: 6}] const ids = new Set(arr2.map(({ id }) => id)) for (const item of arr1) { item.checked = ids.has(item.id) } console.log(arr1) /* Result [ { id: 1, checked: false }, { id: 2, checked: true }, { id: 3, checked: false }, { id: 4, checked: true } ] */

Punto de referencia rápido:

 Running "Array check (1000 elements)" suite... Progress: 100% Set.has: 15 671 ops/s, ±0.38% | fastest two loops: 543 ops/s, ±0.48% | slowest, 96.54% slower Finished 2 cases! Fastest: Set.has Slowest: two loops
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