Перебирать переменную состояния - PullRequest
0 голосов
/ 28 октября 2018

Я перебираю состояние, отформатированное следующим образом:

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)

Любой совет высоко ценится

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

Чтобы перебрать свойства объекта, вы можете использовать любой из 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);
}) 
0 голосов
/ 28 октября 2018

Вы не можете перебирать объекты так же, как в массивах.У вас есть несколько вариантов:

С 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 ​​(), чтобы получить только значения ['7:00', '8:00'], ['9:00', '12: 00 ']

Object.values(this.state.dayTimeArray).forEach(([key, value]) => {
    console.log(value);
}) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...