我有一个api调用,可在控制台中生成以下结果(使用map()配对后)。
{…}
CHANGE24HOUR: "$ 11.16"
CHANGEDAY: "$ 3.31"
CHANGEPCT24HOUR: "6.73"
CHANGEPCTDAY: "1.90"
FROMSYMBOL: "Ξ"
HIGH24HOUR: "$ 183.38"
HIGHDAY: "$ 183.38"
但是,无论我尝试什么,我都无法理解它的属性。该对象称为“ coinStats”。
我尝试了以下方法:
coinStats.HIGHDAY = undefined
coinStats['HIGHDAY'] = undefined
coinStats["HIGHDAY"] = undefined
试图将其转换为数组,以查看是否有帮助使用
Object.values(coinStats) // Would not work
我确信答案是如此简单。但是我只是不确定这是什么?
原始api原始结果具有以下形状:
(1) […]
0: Object { CoinInfo: {…}, RAW: {…}, DISPLAY: {…} }
length: 1
<prototype>: [
我要查找的信息在DISPLAY-> USD中。我使用了map()函数来返回该子对象。
我用来获取数据的代码基本上是以下代码:
const API = 'https://min-api.cryptocompare.com/data/top/mktcapfull?tsym=USD&page=1';
fetch(API)
.then(results => results.json())
.then(coinData => {
const view = coinData.Data.filter(obj => { return obj.CoinInfo.Name === TRX});
})
const coinFeedAbridged = view.map(item => item.DISPLAY.USD);
const coinStats = coinFeedAbridged[0];
console.dir(coinStats);
例如,我无法访问coinStats.HIGHDAY ...我得到“未定义”。
答案 0 :(得分:1)
fetch调用是异步的,因此在调用完成之前,您无法访问view
变量。该代码调用异步函数并运行下一行,因此view
变量将是未定义的。您必须在已知数据的fetch回调函数中处理数据。
const API = 'https://min-api.cryptocompare.com/data/top/mktcapfull?tsym=USD&page=1';
fetch(API)
.then(results => results.json())
.then(coinData => {
const view = coinData.Data.filter(obj => {
return obj.CoinInfo.Name === 'TRX'
});
const coinFeedAbridged = view.map(item => item.DISPLAY.USD);
const coinStats = coinFeedAbridged[0];
console.log(coinStats);
})
}
您可以在此小提琴中对其进行测试。 https://jsfiddle.net/gran7ptk/1/
答案 1 :(得分:0)
更改行-在文本“ TRX”中添加逗号。
const view = coinData.Data.filter(obj => { return obj.CoinInfo.Name
=== TRX});
到 const view = coinData.Data.filter(obj => {return obj.CoinInfo.Name ===“ TRX”});