Javascript 访问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;

我试图从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; 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。当您尝试
数据时,
应作为键出现在数据中,但事实并非如此。项是一个持有键的变量。因此,我们需要像
数据[项]
一样使用它