2016-05-21 10 views
1

Reactでオブジェクトを含む配列を含むオブジェクトをループしようとしましたが、.map関数でエラーが発生します。 .mapReactの配列内のオブジェクトの.map

私が欲しいもの
//0 is January, 1 is February, and so on... inside has objects that have the day number and day of week 
let result = { 
    0:[ 
     {dayNumber:1,dayOfWeek:"fri"}, 
     {dayNumber:2,dayOfWeek:"sat"}, 
     {dayNumber:3,dayOfWeek:"sun"}, 
     ... 
     ], 
    1:[ 
     {dayNumber:1,dayOfWeek:"mon"}, 
     {dayNumber:2,dayOfWeek:"tue"}, 
     {dayNumber:3,dayOfWeek:"wed"}, 
     ... 
     ], 
    2:[ 
     {dayNumber:1,dayOfWeek:"tue"}, 
     {dayNumber:2,dayOfWeek:"wed"}, 
     {dayNumber:3,dayOfWeek:"thur"}, 
     ... 
     ], 

    ... 
}; 

//result is in a function that is returned and set state is calling the function and setting state to the object itself -- here is setState: 

this.setState(getDaysArray(y,m)); 

//getDaysArray(y,m) returns that object above 

がある:ここでは

//trying to access January from the object which is 0 starting month 
let daysOfWeeks = this.state[0].map(function (day, i){ 
    ... 
} 

がオブジェクトの例である:ここでは、オブジェクトが.MAP

this.stateにどのように見えるかが続く.map関数であります私はループしているオブジェクトであるために日です。 day.dayNumberday.dayOfWeek

... .map(function(day, i){ 
    return(
     <div> 
      <div>{day.dayNumber}</div> 
      <div>{day.dayOfWeek}</div> 
     </div> 
    ) 
} 

しかし.mapに何のエラーでは、私が問題だと思うthis.state[0]です。誰でも、親オブジェクト内の配列内のオブジェクトにアクセスしてループする方法を知っていますか?あなたはこのようなオブジェクトを持っている場合

+0

州には何がありますか? this.state ===結果ですか?その場合、this.state [0]の代わりにthis.state.mapを使用してください.map – dejakob

+0

エラーは何ですか?上記のコメントに間違って聞いてはいけません。明らかに、オブジェクトを介してマップすることはできません。 – JordanHendrix

+0

let daysOfWeeks = this.state [0] .map(function(day、i){...エラーはUncaught TypeError:未定義のプロパティ 'map'を読み取ることができません – Chipe

答えて

2

は、キーが「数であっても、キーとして数字で、this.state.result['0'].map(...)

をお試しください。それを文字列としてアクセスします。オブジェクトキーはデフォルトで文字列です。

let result = { 
    0:[ 
     {dayNumber:1,dayOfWeek:"fri"}, 
     {dayNumber:2,dayOfWeek:"sat"}, 
     {dayNumber:3,dayOfWeek:"sun"}, 
     ... 
     ] 
}