我正在嘗試使用 Javascript 獲取一個嵌套物件的所有鍵,但根據我的代碼,它沒有按預期作業。我在下面解釋我的代碼。
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);
在這里,我沒有得到service陣列中存在的鍵。我需要使用 Javascript 搜索一個嵌套物件中存在的所有鍵。
uj5u.com熱心網友回復:
你可以這樣做
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))
uj5u.com熱心網友回復:
您要求它與作為陣列的“服務”鍵一起使用,但是您的代碼顯式檢查型別,如果它是陣列,它只是忽略它。這是調整為與陣列一起使用的代碼。
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) {
data.forEach(value => {
getNestedKeys (value, keys);
});
}
if(!(data instanceof Array) && typeof data == 'object'){
Object.keys(data).forEach(key => {
keys.push(key);
const value = data[key];
if(typeof value === 'object'){
getNestedKeys(value, keys);
}
});
}
return keys
}
let result = getNestedKeys(jsonObj, []);
console.log('result', result);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/476217.html
標籤:javascript 目的
