开发者问题收集

如何访问 Javascript 对象的属性?

2019-05-07
105

我有一个 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...我得到了“未定义”。

2个回答

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);

    })
  }

您可以在此 fiddle 中对其进行测试。 https://jsfiddle.net/gran7ptk/1/

aleberguer
2019-05-07

更改行 - 为文本“TRX”添加引号。

 const view = coinData.Data.filter(obj => { return obj.CoinInfo.Name
 === TRX});

至 const view = coinData.Data.filter(obj => { return obj.CoinInfo.Name === "TRX"});

preeti jain
2019-05-07