Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

119
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!