Javascript 使用fetch成功调用API,但可以';t从对象中提取单个值
我能够成功地调用API,并在控制台中显示完整列表。然而,当我尝试提取单个元素时,我得到了“未定义”。我看不出我做错了什么。下面是我的代码:Javascript 使用fetch成功调用API,但可以';t从对象中提取单个值,javascript,fetch,Javascript,Fetch,我能够成功地调用API,并在控制台中显示完整列表。然而,当我尝试提取单个元素时,我得到了“未定义”。我看不出我做错了什么。下面是我的代码: let myHeaders = new Headers(); myHeaders.append("X-eBirdApiToken", "someToken"); let requestOptions = { method: 'GET', headers: myHeaders, redirect
let myHeaders = new Headers();
myHeaders.append("X-eBirdApiToken", "someToken");
let requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
class Birds {
constructor(region) {
this.region = 'US-MA'
}
async getBirds() {
const response = await fetch(`https://api.ebird.org/v2/data/obs/${this.region}/recent`, requestOptions);
const data = await response.json();
console.log(data);
console.log(data.comName);
console.log(data["locId"]);
const {speciesCode, comName} = data;
console.log(speciesCode, comName)
return data;
}
}
下面是API的示例输出,我得到了283行:
281:
通讯名称:“Catharus sp.”
人数:1
拉丁美洲:42.219
液化天然气:-71.064
locId:“L207351”
地点名称:“蓝山保留地”
地点私人:假
obsDt:“2020-07-10 11:50”
评论:错
是的
名称:“Catharus sp.”
物种代码:“cathus”
子ID:“S71320255”
__原型:
构造函数:ƒObject()
hasOwnProperty:ƒhasOwnProperty()
isPrototypeOf:ƒisPrototypeOf()
propertyIsEnumerable:ƒpropertyIsEnumerable()
toLocaleString:ƒtoLocaleString()
toString:ƒtoString()
valueOf:ƒvalueOf()
__定义者:定义者()
__定义设置:定义设置()
__lookupGetter_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
__lookupSetter_uuuu:ƒuuu lookupSetter_uuuuu()
获取uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu()
集合
当我尝试获取单个项目时:
未定义
birds.js:20未定义
birds.js:23未定义未定义
这一行显示您正在尝试解构单个对象
const {speciesCode, comName} = data;
然而,数据是一个数组!因此,如果您想要控制台日志,您需要
const {speciesCode, comName} = data[0];
这一行表示你试图解构一个对象
const {speciesCode, comName} = data;
然而,数据是一个数组!因此,如果您想要控制台日志,您需要
const {speciesCode, comName} = data[0];
请提供
console.log(data)
的输出。添加data
对象,即控制台日志记录后得到的对象。“从列表中提取单个项目”-您发布的代码中没有任何内容可以访问列表?!看一看Thank@Bergi,它非常有帮助和彻底。请提供控制台的输出。日志(数据)
。添加数据
对象,即控制台日志记录后得到的对象。“从列表中提取单个项目”-您发布的代码中没有任何内容可以访问列表?!看一看Thank@Bergi,它非常有帮助和彻底。谢谢你,这解决了问题。然而,我知道我意识到我试图跳过一步。我需要先运行for循环,然后处理各个对象。谢谢,这解决了问题。然而,我知道我意识到我试图跳过一步。我需要先运行for循环,然后处理各个对象。