如何从Javascript中的新对象获取JSON数据键和内部键

如何从Javascript中的新对象获取JSON数据键和内部键,javascript,jquery,json,Javascript,Jquery,Json,我有一个JSON,从中我需要提取JSON中的所有键。到目前为止,我提取了所有键,但我需要从只有键值的多维数组中提取 { “合作社”:{ “lon”:-0.13, “lat”:51.51 }, “天气”:[ { “id”:300, “主要”:{ “潜艇”:“毛毛雨” }, “说明”:“光照强度细雨”, “图标”:“09d” } ] }你可以试试这个片段(它非常简单) let getKeyList=obj=>Object.keys(obj).reduce((s,key)=>{ if(Array.

我有一个JSON,从中我需要提取JSON中的所有键。到目前为止,我提取了所有键,但我需要从只有键值的多维数组中提取

{
“合作社”:{
“lon”:-0.13,
“lat”:51.51
},
“天气”:[
{
“id”:300,
“主要”:{
“潜艇”:“毛毛雨”
},
“说明”:“光照强度细雨”,
“图标”:“09d”
}
]
}
你可以试试这个片段(它非常简单)

let getKeyList=obj=>Object.keys(obj).reduce((s,key)=>{
if(Array.isArray(obj[key])){
//如果它是一个数组,那么将它的所有值(键)减少为一个数组数组。。。
s、 按下(obj[键])。减少(acc,sub)=>{
acc.push(getKeyList(子));
返回acc;
}, []))
}否则{
//如果它是一个对象,那么递归。。。
if(类型(对象[键]=“对象”)
s、 推送(getKeyList(obj[key]))
}
//总是按钥匙
s、 按(键)
返回s;
},[/*商店*/]);
//JSON数据
var x={“coord”:{“lon”:-0.13,“lat”:51.51},“天气”:[{“id”:300,“主要”:“毛毛雨”,“描述”:{“小毛毛雨”,“大毛毛雨”,“光强度毛毛雨”,“图标”:“09d”}],“基地”:“车站”,“主要”:{“温度”:280.32,“压力”:1012,“湿度”:81,“最高温度”:279.15,“温度”:281.15},“能见度”:10000,“风速”:“风速”:4.1,“度”:80},“云”:{“全部”:90},“dt”:1485789600,“系统”:{“类型”:1,“id”:5091,“消息”:0.0103,“国家”:“GB”,“日出”:1485762037,“日落”:1485794875},“id”:2643743,“名称”:“伦敦”,“cod”:200};
//那就称它为

console.log(getKeyList(x))您可以将reduce与一些作为对象的重复读取字段一起使用:

功能键列表(obj){
返回Object.keys(obj).reduce(函数(arr,key){
arr.push(按键);
if(类型(对象[键])==“对象”){
arr.push(键列表(obj[key]);
}
返回arr;
}, []);
}
var obj={
“合作社”:{
“lon”:-0.13,
“lat”:51.51
},
“天气”:[
{
“id”:300,
“主要”:“细雨”,
“说明”:{
“小雨”描述:“光照强度毛毛雨”,
“大描述”:“光照强度细雨”
},
“图标”:“09d”
}
],
“基站”:“基站”,
“主要”:{
“温度”:280.32,
“压力”:1012,
“湿度”:81,
“临时工”:{
“最小”:279.15,
“最大值”:281.15
}
},
“能见度”:10000,
“风”:{
“速度”:4.1,
“度”:80
},
“云”:{
“全部”:90
},
“dt”:1485789600,
“系统”:{
“类型”:1,
“id”:5091,
“消息”:0.0103,
“国家”:“GB”,
“日出”:1485762037,
“日落”:1485794875
},
“id”:2643743,
“名称”:“伦敦”,
“cod”:200
}
var keyValue1=密钥列表(obj);
控制台日志(keyValue1)