Javascript 访问API嵌套对象
我试图从API访问某些货币的值,但我无法从函数中获取它们 API解析后返回:Javascript 访问API嵌套对象,javascript,Javascript,我试图从API访问某些货币的值,但我无法从函数中获取它们 API解析后返回:{“ETH”:{“USD”:188.01},“BTC”:{“USD”:10330.41} 这是我使用的代码: fetch('https://min-api.cryptocompare.com/data/pricemulti?fsyms=ETH,BTC&tsyms=USD') .then(val => val.json()).then(data => { info = data;
{“ETH”:{“USD”:188.01},“BTC”:{“USD”:10330.41}
这是我使用的代码:
fetch('https://min-api.cryptocompare.com/data/pricemulti?fsyms=ETH,BTC&tsyms=USD')
.then(val => val.json()).then(data => {
info = data; for (var item in data) { console.log(item.USD) }
});
它的日志未定义
当我在它console.log(item)
中执行此操作时,它将ETH
和BTC
记录为字符串,而不是应该记录为对象。
当我在控制台中(在.then之外)写入info.ETH.USD
时,我会得到结果
我做错了什么?它不适用于您的原因是您在对象中循环并返回键,而不是实际的对象<代码>项指对象的
键
试试这个:
fetch('https://min-api.cryptocompare.com/data/pricemulti?fsyms=ETH,BTC&tsyms=USD')。
然后(res=>res.json())
。然后(数据=>{
log(“对象”,数据)
for(数据中的var项){
console.log(数据[项])
}
})
我认为您对JSON对象操作感到困惑。
在使用JSON对象时,了解一些通常有用的东西
从JSON对象获取值:
var obj = {"ETH":{"USD":188.01},"BTC":{"USD":10330.41}};
obj["ETH"] // return {"USD":188.01}
obj["ETH"]["USD"] // return 188.01
for(let item in data) {
console.log(data[item])
}
{
"USD": 187.98
}
{
"USD": 10302.56
}
用于在初始级别获取:
var obj = {"ETH":{"USD":188.01},"BTC":{"USD":10330.41}};
obj["ETH"] // return {"USD":188.01}
obj["ETH"]["USD"] // return 188.01
for(let item in data) {
console.log(data[item])
}
{
"USD": 187.98
}
{
"USD": 10302.56
}
在嵌套级别获取:
var obj = {"ETH":{"USD":188.01},"BTC":{"USD":10330.41}};
obj["ETH"] // return {"USD":188.01}
obj["ETH"]["USD"] // return 188.01
for(let item in data) {
console.log(data[item])
}
{
"USD": 187.98
}
{
"USD": 10302.56
}
在您的情况下,您只打印密钥
更新您的语法:
var obj = {"ETH":{"USD":188.01},"BTC":{"USD":10330.41}};
obj["ETH"] // return {"USD":188.01}
obj["ETH"]["USD"] // return 188.01
for(let item in data) {
console.log(data[item])
}
{
"USD": 187.98
}
{
"USD": 10302.56
}
输出:
var obj = {"ETH":{"USD":188.01},"BTC":{"USD":10330.41}};
obj["ETH"] // return {"USD":188.01}
obj["ETH"]["USD"] // return 188.01
for(let item in data) {
console.log(data[item])
}
{
"USD": 187.98
}
{
"USD": 10302.56
}
如果它对你有帮助,请将其标记为正确答案,这将对未来的读者有所帮助。因为
for
提供的是键,而不是值。它是for(key in
它不是for(value in
)。这适用于对象和数组。你可能认为我很傻,但我记得我说的是“Porky Pig”。“Porky”听起来像“for key”。像“forky Porky”。而“Pig”是一个大脂肪集合。“Porky in Pig”是“for key in collection”我的思维可能会以奇怪的方式工作,但也许你也会记得这一点。;)我仍然不清楚的部分是为什么console.log(data[item])工作,而console.log(data.item)工作返回未定义。这两种方法都应适用于对象,就像它们适用于控制台中的info var一样,例如info.ETH.USD。当您尝试数据时,项
应作为键出现在数据中,但事实并非如此。项是一个持有键的变量。因此,我们需要像数据[项]
一样使用它