如何从Javascript对象访问属性?

时间:2019-05-07 11:56:54

标签: javascript arrays reactjs javascript-objects

我有一个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 个答案:

答案 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”});