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