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

71
Vistas
Cómo mejorar la eficiencia de esta búsqueda json

Tengo algunos datos json:

 var data = { "version": "2.0", "result": { "0": [418789, 418790, 418791], "1": [431961, 431962, 431963], } };

Y tengo el valor x que estoy buscando, que en este caso x = 431962 Entonces, para hacer esto, he escrito una función de búsqueda que se proporciona a continuación:

 for (var i = 0; i < Object.keys(data.result).length; i++) { for (var p = 0; p < Object.values(data.result)[i].length; p++) { if (Object.values(data.result)[i][p] == 418789) { console.log(Object.keys(data.result)[i]) } } }

Sin embargo, mi problema es que esta función de búsqueda consta de 2 bucles for que están anidados, por lo que la velocidad es increíblemente lenta cuando se busca en una gran cantidad de datos JSON. Sin embargo, parece que no puedo encontrar una solución sobre cómo mejorar la eficiencia y la velocidad aquí. .

Esta búsqueda está tratando de encontrar en qué clave existe el valor x, donde los nombres de las claves en realidad son nombres aleatorios sin un orden específico, y los datos JSON tienen un par de miles de claves con cada matriz que contiene alrededor de 50 valores de 1 a 1,000,000

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

0

Una mejora que puede hacer es almacenar referencias al objeto/matriz específico con el que está trabajando para que no tenga que volver a Object.keys(...) una y otra vez.

 let data = { "version": "2.0", "result": { "0": [418789, 418790, 418791], "1": [431961, 431962, 431963], } }; function findWhichArrayContainsValue(val) { for (key in data.result) { const candidateArray = data.result[key]; if (candidateArray.includes(val)) { return candidateArray; } } return undefined; } console.log(findWhichArrayContainsValue(418789)); console.log(findWhichArrayContainsValue(898989));

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