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

125
Vistas
busque valor en json y devuelva la clave principal

tengo un json con estructura como esta

 { "india": { "north_states": ["TN", "AP", "MP", "AB"], "south_states": ["PB", "UP", "RJ", "HR"] }, "us": { "north_states": ["AC", "AD", "AE", "AF"], "south_states": ["BA", "BB", "BC", "BD"] }, }

Ahora, si busco "UP", tengo que obtener south_states e india como respuesta. ¿Cómo hago eso en JavaScript?

Por ejemplo:

Necesito obtener el nombre del país según la entrada proporcionada en la búsqueda. por ejemplo, si obtengo el valor de entrada como 'UP', necesito buscar el json donde está UP y obtener su clave (estados_sur) y también necesito obtener el nombre del país como india. el resultado debe tomar la entrada del nombre del acrónimo del estado y dar tanto las claves como el nombre del país y la ubicación del estado (sur o norte)

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

0

Yo iteraría de esta manera:

el código puede necesitar algunos ajustes, pero funciona.

esto usa recursividad, para iterar el JSON para encontrar los objetos/matrices que coinciden. Si se arregla la estructura del JSON, podría ser aún más fácil.

 const countries = { "india":{"north_states":["TN","AP","MP","AB"],"south_states":["PB","UP","RJ","HR"]}, "us":{"north_states":["AC","AD","AE","AF"],"south_states":["BA","BB","BC","BD"]}, }; function findItems(data, value, pkey){ let results = []; for(let key of Object.keys(data)){ let newData = data[key]; if(typeof(newData) == 'string'){ if(newData == value){ results.push(pkey); } } else { results = findItems(newData, value, key).concat(results); } } if(results.length > 0 && pkey && results.indexOf(pkey) == -1){ results.push(pkey); } return results; } let search = findItems(countries, 'UP'); console.info(search);

Para una estructura fija, y solo en el resultado, se debe encontrar:

 const countries = { "india":{"north_states":["TN","AP","MP","AB"],"south_states":["PB","UP","RJ","HR"]}, "us":{"north_states":["AC","AD","AE","AF"],"south_states":["BA","BB","BC","BD"]}, }; function findItems(data, searchTerm){ let results = []; for(let country of Object.keys(data)){ let stateGroups = data[country]; for(let stateGroupName of Object.keys(stateGroups)){ let stateGroup = stateGroups[stateGroupName]; if(stateGroup.indexOf(searchTerm)!=-1){ return [country, stateGroupName]; } } } } let search = findItems(countries, 'UP'); console.info(search);

about 4 years ago · Juan Pablo Isaza Denunciar

0

  1. Analice el JSON en un objeto JS que puede recorrer.

  2. Recorra las propiedades del objeto principal y luego repita cada una de las propiedades de esos objetos, y si alguna de esas matrices includes el valor que desea hacer coincidir, devuelva la clave del objeto principal y la clave del objeto interno.

 const json = '{"india":{"north_states":["TN","AP","MP","AB"],"south_states":["PB","UP","RJ","HR"]},"us":{"north_states":["AC","AD","AE","AF"],"south_states":["BA","BB","BC","BD"]}}'; const data = JSON.parse(json); function check(data, val) { for (let key in data) { for (let innerkey in data[key]) { if (data[key][innerkey].includes(val)) { return [key, innerkey]; } } } return 'No match'; } console.log(check(data, 'UP')); console.log(check(data, 'BO')); console.log(check(data, 'AF'));

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