【问题标题】:Iterate over a state variable迭代状态变量
【发布时间】:2018-10-28 14:51:32
【问题描述】:

我正在迭代一个格式如下的状态:

this.state = {
    dayTime: {
        Monday:['7:00', '8:00'], Tuesday: ['9:00', '12:00']
    }
 }

当我尝试迭代 dayTime 状态时,我不能(尝试过 for().foreach.map)。

我可以访问this.state.dayTime.Monday,但我想知道是否有推荐的方法来进行这样的迭代。

我在下面附上了我的一些尝试:

this.state.dayTimeArray.forEach((ele)=>{
    console.log(ele)//error
}, this)

this.state.dayTimeArray.map(function(ele){
    console.log(ele)//error
}, this)

非常感谢任何建议

【问题讨论】:

    标签: javascript node.js reactjs iterator


    【解决方案1】:

    您不能像在数组中那样迭代对象。 你在这里有几个选择:

    用 Object.entries 获取条目数组:[key, value]

    Object.entries(this.state.dayTimeArray).forEach(([key, value]) => {
        console.log(key, value);
    })
    

    使用 Object.keys() 仅获取键 [星期一,星期二]

    Object.keys(this.state.dayTimeArray).forEach((key) => {
        console.log(key, this.state.dayTimeArray[key]);
    })
    

    使用 Object.values() 只获取值 ['7:00', '8:00'], ['9:00', '12:00']

    Object.values(this.state.dayTimeArray).forEach(([key, value]) => {
        console.log(value);
    }) 
    

    【讨论】:

      【解决方案2】:

      为了迭代对象属性,您可以使用Object.keys()Object.values()Object.entries() 中的任何一个(以最适合您的需要)来获取可以迭代的属性数组

      Object.entries

      Object.entries(this.state.dayTimeArray).forEach(([key, value]) => {
          console.log(key, value);
      })
      

      Object.keys()

      Object.keys(this.state.dayTimeArray).forEach((key) => {
          console.log(key, this.state.dayTimeArray[key]);
      })
      

      使用Object.values() 仅获取值

      Object.values(this.state.dayTimeArray).forEach(([key, value]) => {
          console.log(value);
      }) 
      

      【讨论】:

        猜你喜欢
        • 2019-06-02
        • 1970-01-01
        • 1970-01-01
        • 2014-05-08
        • 2017-09-08
        • 2023-04-04
        • 2018-09-04
        • 2011-05-26
        • 2019-09-02
        相关资源
        最近更新 更多