无法访问动态对象 属性 并存储到反应中的状态

unable to access dynamic object property and store to state in react

我正在尝试从 nasa open api 之一获取这些数组 -> https://api.nasa.gov/neo/rest/v1/feed?start_date=START_DATE&end_date=END_DATE&api_key=API_KEY

我在参数中有一个动态日期,所以返回的对象与日期匹配,有什么方法可以使用我的日期(即使它是一个字符串)并将其转换为 'key' 值,所以我可以动态抓取我需要的对象吗?

like =>“2021-08-26”将引用 { 2021-08-26: [{},{},{}...] }

到目前为止,我已经将我的代码包含在我尝试过的代码中,目前我正在尝试使用 forEach select {near_earth_objects} 中的所有键,但我仍然出现错误 data.near_earth_objects.forEach is not a function

constructor(){
        super();
        this.state={
            asteroids:[],
            time: []
            
        }
    }

    //grab the current time  (year-month-day) and store it in the state
    componentWillMount(){
        var today = new Date();
        var start = today.getFullYear()+'-'+0+(today.getMonth()+1)+'-'+today.getDate();  
        var end = today.getFullYear()+'-'+0+(today.getMonth()+1)+'-'+(today.getDate()+1); 

        this.setState({time: [start,end]})
    }


    componentDidMount(){
        
        fetch(`https://api.nasa.gov/neo/rest/v1/feed?start_date=${this.state.time[0]}&end_date=${this.state.time[1]}&api_key=ipAxYzaENbqRKb7GgzFPcH6QUBsHXY3QKB7uXOf5`
        )
      .then(response => response.json())
      .then((data) => {
            let asteroids = []
            data.near_earth_objects.forEach((arr)=>{
            asteroids.push(arr)
        })
        this.setState({asteroids:asteroids})
      });
    }
   

这是我尝试访问的记录数据的示例

请务必注意,数据以对象形式返回,其中的值是数组。由于 return 数据是一个对象,因此您无法对其进行迭代。

但是,要获取数据,您可以 Object.values(object) (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values) 获取值数组。这将 return 看起来像 [ [...], [...] ]

之后您可以迭代此信息。

最后你的代码应该是这样的:

Object.values(data.near_earth_objects).forEach((arr)=>{
    asteroids.push(...arr)
})