Javascript 使用动态属性名访问嵌套属性
我有一个从这个JSON生成的对象:Javascript 使用动态属性名访问嵌套属性,javascript,arrays,json,Javascript,Arrays,Json,我有一个从这个JSON生成的对象: { "data": { "Meta Data": { "1. Information": "Monthly Prices (open, high, low, close) and Volumes", "2. Symbol": "MSFT", "3. Last Refreshed": "2017-08-18", "4. Time Zone":
{
"data": {
"Meta Data": {
"1. Information": "Monthly Prices (open, high, low, close) and Volumes",
"2. Symbol": "MSFT",
"3. Last Refreshed": "2017-08-18",
"4. Time Zone": "US/Eastern"
},
"Monthly Time Series": {
"2017-08-18": {
"1. open": "73.1000",
"2. high": "74.1000",
"3. low": "71.2800",
"4. close": "72.4900",
"5. volume": "285933387"
},
"2017-07-31": {
"1. open": "69.3300",
"2. high": "74.4200",
"3. low": "68.0200",
"4. close": "72.7000",
"5. volume": "451248934"
}
}
}
}
使用Object.keys()
,我可以获得“每月时间序列”键,但如何访问其中的键?我想通过“Monthly time series”键中的键运行for循环。我该怎么做呢?您可以使用来获取密钥数组,但我建议使用来迭代密钥数组,而不是for…循环
代码:
const obj={“数据”:{“元数据”:{“1.信息”:“月度价格(开盘、高位、低位、收盘)和成交量”,“2.符号”:“MSFT”,“3.上次刷新”:“2017-08-18”,“4.时区”:“美国/东部”},“月度时间序列”:{“2017-08-18”:“开盘”:“73.1000”,“2.高位”:“74.1000”,“3.低位”:“71.2800”,“4.收盘”:“72.4900”,“5.成交量”:“28593387”},“2017-07-31”:{“1.开盘”:“69.3300”,“2.高”:“74.4200”,“3.低”:“68.0200”,“4.收盘”:“72.7000”,“5.成交量”:“451248934”};
对象
.keys(对象数据['月度时间序列])
.forEach(函数(k){
console.log(对象数据['Monthly Time Series'][k]['1.open']);
})
您可以通过Object.keys
功能以与现在相同的方式访问密钥
var data = JSON.parse('{"data": {\
"Meta Data": {\
"1. Information": "Monthly Prices (open, high, low, close) and Volumes",\
"2. Symbol": "MSFT",\
"3. Last Refreshed": "2017-08-18",\
"4. Time Zone": "US/Eastern"\
},\
"Monthly Time Series": {\
"2017-08-18": {\
"1. open": "73.1000",\
"2. high": "74.1000",\
"3. low": "71.2800",\
"4. close": "72.4900",\
"5. volume": "285933387"\
},\
"2017-07-31": {\
"1. open": "69.3300",\
"2. high": "74.4200",\
"3. low": "68.0200",\
"4. close": "72.7000",\
"5. volume": "451248934"\
}\
}}}');
console.log(Object.keys(data['data']["Monthly Time Series"]));
输出:
(2) ["2017-08-18", "2017-07-31"]
啊,在编辑之后,如果你想循环遍历它们,你不需要
Object.keys
函数-你可以像这样简单地遍历对象:
for (var i in data['data']['Monthly Time Series'])
console.log(i, data['data']['Monthly Time Series'][i])
i
将包含您的密钥
根据评论:
var obj = {"data": {
"Meta Data": {
"1. Information": "Monthly Prices (open, high, low, close) and Volumes",
"2. Symbol": "MSFT",
"3. Last Refreshed": "2017-08-18",
"4. Time Zone": "US/Eastern"
},
"Monthly Time Series": {
"2017-08-18": {
"1. open": "73.1000",
"2. high": "74.1000",
"3. low": "71.2800",
"4. close": "72.4900",
"5. volume": "285933387"
},
"2017-07-31": {
"1. open": "69.3300",
"2. high": "74.4200",
"3. low": "68.0200",
"4. close": "72.7000",
"5. volume": "451248934"
}
}}}
Object.keys(obj.data["Monthly Time Series"]).map(function(key, index){ return obj.data["Monthly Time Series"][key]["1. open"]; });
要从数组中获取一个值,请执行以下操作:
(2) ["73.1000", "69.3300"]
或:
要获取所有值(它们不会被浓缩)
Reflect.ownKeys(JSON.parse(data)[“Monthly Time Series”]”)
,您必须尝试递归方法在JSON@Hitmands中使用意外的标记“o”。这样做之后,您有JSON或javascript对象吗?为什么要使用object.keys()
要访问非随机属性,如“月度时间序列”
?var monthlyTimeSeries=object[“data”][“Monthly Time Series”];
要访问“1.open”inside“Monthly Time Series”的值,我可以做什么?如果我重复上面的方法,它显示未定义!要访问“1.open”在“Monthly time series”中的值,我能做什么?如果我重复上述方法,它会显示未定义!1.open
不在Monthly time series
-它是data['data']['Monthly time series']['2017-07-31']['1.open']
我做了类似于此对象的操作。键(response.data['Monthly Time Series'].forEach(函数(k){console.log(Object.keys(k[“1.open”]);它在控制台上提供未定义的项请指定您要执行的操作-现在您正在获取forEach
循环的结果键,该循环确实返回未定义的(forEach
始终返回未定义的)。是否要获取月度时间序列中最低级别的值?
?是,我要获取月度时间序列中最低级别的值
Object.keys(obj.data["Monthly Time Series"]).map(function(key, index){ return Object.values(obj.data["Monthly Time Series"][key]); });