Advertisements
I am trying to fetch all the keys of one nested object using Javascript but as per my code its not working as expected. I am explaining my code below.
let jsonObj = {
"service":[
{
"name":"restservice",
"device":"xr-1",
"interface-port":"0/0/2/3",
"interface-description":"uBot testing for NSO REST",
"addr":"10.10.1.3/24",
"mtu":1024
}
],
"person": {
"male": {
"name": "infinitbility"
},
"female": {
"name": "aguidehub"
}
}
}
const getNestedKeys = (data, keys) => {
if(!(data instanceof Array) && typeof data == 'object'){
Object.keys(data).forEach(key => {
keys.push(key);
const value = data[key];
if(typeof value === 'object' && !(value instanceof Array)){
getNestedKeys(value, keys);
}
});
}
return keys
}
let result = getNestedKeys(jsonObj, []);
console.log('result', result);
Here I am not getting the keys present inside the service
array. I need to search all the keys present inside one nested object using Javascript.
>Solution :
you can do this
const readAllKeys = obj => {
if(typeof obj !== 'object'){
return []
}
if(Array.isArray(obj)){
return obj.flatMap(readAllKeys)
}
return [...Object.keys(obj), ...Object.values(obj).flatMap(readAllKeys)]
}
let jsonObj = {
"service":[
{
"name":"restservice",
"device":"xr-1",
"interface-port":"0/0/2/3",
"interface-description":"uBot testing for NSO REST",
"addr":"10.10.1.3/24",
"mtu":1024
}
],
"person": {
"male": {
"name": "infinitbility"
},
"female": {
"name": "aguidehub"
}
}
}
console.log(readAllKeys(jsonObj))