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

121
Vistas
search for value in json and return the main key

i have a json with structure like this

{
  "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"]
  },
}

Now if I search for "UP", I have to get south_states and india as reply. how do i do that in JavaScript?

For example:

I need to get the country name based upon the input given in search. for example if i get the input value as 'UP' i need to search the json where UP is and get its key (south_states) and i also need to get the country name as india. the result should take the input of state acronym name and give both the keys as country name and the state_location(south or north)

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

0

I would iterate in this fashion:

the code might need some tweaking, but it works.

this uses recursion, to iterate the JSON to find the objects/array's that match. If the structure of the JSON is fixed, it could be even easier.

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);

For a fixed structure, and only on result should be found:

    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. Parse the JSON into a JS object that you can loop over.

  2. Loop over the main object properties, and then loop over each of those object's properties, and if any of those arrays includes the value you want to match, return the key of the main object, and the key of the inner object.

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