首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >来自JSON对象的数组

来自JSON对象的数组
EN

Stack Overflow用户
提问于 2019-02-01 06:23:40
回答 4查看 81关注 0票数 0

React组件的概要如下:

代码语言:javascript
复制
const API = 'https://min-api.cryptocompare.com/data/histohour?fsym=BTC&tsym=USD&aggregrate=168&limit=168&api_key=90f934173fe9dd81d5acc53f0a9a6c56a9ffcce322e24e722fa842deeff3601b'

class BtcOverview extends React.Component {
  constructor(props) {
    super(props);
        ...
    this.intPriceData = [];
  }

 componentWillMount() {

    fetch(API)
    .then(results => results.json())
    .then(marketData => {

      var count = 0;
      for (let number in marketData.Data){
        this.intPriceData.push(marketData.Data[number].close)
      };

    })
  }

当在Fetch()外部访问this.intPriceDash时,它会返回一个对象数组,下面的图片中可以看到其中的一个片段:

我需要一个来自对象数组的标准数组,像这样的1,4,6,但是它不会响应我尝试的任何对象操作符,比如Object.value(),并且总是返回未定义的。

我不知道如何从其中获取所需的值,也不知道数据类型是否有问题。

我不能使用Fetch()方法中的API数据作为标准,因为我使用的代码不容易适应这种情况,因此我尝试在其他地方访问它。

任何想法都会非常感谢。T

EN

回答 4

Stack Overflow用户

发布于 2019-02-01 06:29:50

我不认为这是一个对象数组。它只是开发工具折叠数组的方式,而不是一次显示所有项。

在控制台中运行以下代码片段:let a = []; for(let i = 0; i < 200; i++) a.push(1);

这将生成包含200个元素的数组。然后,看看它将如何在控制台中显示。

票数 0
EN

Stack Overflow用户

发布于 2019-02-01 06:30:22

看起来响应数据已经采用了正确的格式。考虑使用Array#map()方法将其转换为close字段的值数组,该数组存在于marketData.Data数组的每一项上:

代码语言:javascript
复制
const API = 'https://min-api.cryptocompare.com/data/histohour?fsym=BTC&tsym=USD&aggregrate=168&limit=168&api_key=90f934173fe9dd81d5acc53f0a9a6c56a9ffcce322e24e722fa842deeff3601b'

var intPriceData = [];

fetch(API)
  .then(results => results.json())
  .then(marketData => {

    intPriceData = marketData.Data.map(item => item.close);

    console.log(intPriceData);
  })

更新

考虑到您正在使用ReactJS,下面是一个集成示例,展示了从fetch()返回close数据后如何在组件中呈现该数据

代码语言:javascript
复制
class BtcOverview extends React.Component {
  constructor(props) {
    super(props);

    // Initial state
    this.state = { intPriceData : [] };
  }

 componentWillMount() {

    fetch(API)
    .then(results => results.json())
    .then(marketData => {

        // Update state of component
        this.setState({ 
          intPriceData : marketData.Data.map(item => item.close) 
        });

    })
  }

  render() { 
     return (<ul>{ this.state.intPriceData.map(close => <li>{close}</li>)}</ul>)
  } 
}
票数 0
EN

Stack Overflow用户

发布于 2019-02-01 06:36:02

我认为您只需要对对象数组执行map操作,以便只返回所需的值:

代码语言:javascript
复制
const API = 'https://min-api.cryptocompare.com/data/histohour?fsym=BTC&tsym=USD&aggregrate=168&limit=168&api_key=90f934173fe9dd81d5acc53f0a9a6c56a9ffcce322e24e722fa842deeff3601b'

fetch(API)
  .then(results => results.json())
  .then(marketData => {
    const intPriceData = marketData.Data.map(item => item.close);
    
    console.log(intPriceData);
  });

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54470094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档