2017-07-19 62 views
0

我想通過一個數組來循環從一個對象中拉出一塊信息。得到它了!但是,我需要在獲取第一塊數據以從嵌套的對象數組中獲取更多數據之後,循環訪問同一對象中的數組。任何線索我怎麼能做到這一點?我嘗試了多種方式。我現在堅持試圖在這個渲染函數中運行兩個if語句,它反應/ redux不是「喜歡」。即它不會執行第二條if語句。任何幫助表示讚賞。在底部有一個我的數據結構示例謝謝!通過一個對象循環,然後通過一個嵌套的對象數組 - javascript react/redux

render(){ 
    let takePoll; 
    let choices; 
     if(this.props.polls.length > 0){ 
      takePoll = this.props.polls.map(poll => { 
       if (this.props.pollId === poll.id){ 
        return (
         <div> 
          <h2 className="take-poll">{poll.text}</h2> 
         </div> 
        ) 
       } 
      }) 
     } 

     if(this.props.polls.length > 0){ 
      let choices = this.props.polls.map(poll => { 
       if (this.props.pollId === poll.id){ 
        return poll.choices.map(obj => { 
         return ( 
          <div> 
           <h3>{obj.choice}</h3> 
          </div> 
         ) 
        }) 
       } 
      }) 
     } 
    return (
     <div> 
      {takePoll} 
      {choices} 
     </div> 
    ) 
} 



//DATA STRUCTURE BELOW: 

{ 
"id": "596dfbbc02c10a41e05a82d5", 
"text": "which summer was hotter?", 
"choices": [ 
    { 
     "choice": "2017", 
     "vote": "0" 
    }, 
    { 
     "choice": "2004", 
     "vote": "0" 
    } 
], 
"date": "2017-07-18T12:14:52.791Z" } 
+1

選擇已經通過讓選擇來定義,你不能再定義它。再次移除let標籤。 – error404

回答

0

兩個if()語句具有相同的確切變量/值檢查不應該是您的修復程序。鑑於什麼@Anamul建議,你可能想嘗試這樣的事:

render() { 
    let takePoll; 
    let choices; 
    if (this.props.polls.length > 0) { 
    takePoll = this.props.polls.map(poll => { 
     if (this.props.pollId === poll.id) { 
     return (
      <div> 
      <h2 className="take-poll">{poll.text}</h2> 
      </div> 
     ) 
     } 
    }) 
    choices = this.props.polls.map(poll => { 
     if (this.props.pollId === poll.id) { 
     return poll.choices.map(obj => { 
      return (
      <div> 
       <h3>{obj.choice}</h3> 
      </div> 
     ) 
     }) 
     } 
    }) 
    } 
    return (
    <div> 
     {takePoll} 
     {choices} 
    </div> 
) 
} 
0

好,如果我是你,我會做一個循環

render(){ 
let takePoll = []; 
let choices = []; 

for(let i = 0; i < this.props.polls.length; i++) { 
    let poll = this.props.polls[i] 
    if (this.props.pollId === poll.id){ 
     takePool.push(
      <div> 
       <h2 className="take-poll">{poll.text}</h2> 
      </div> 
     ) 
     choices.concat(poll.choices.map(obj => { 
      return ( 
       <div> 
        <h3>{obj.choice}</h3> 
       </div> 
      ) 
     })) 
    } 
}) 

return (
    <div> 
     {takePoll} 
     {choices} 
    </div> 
)} 

注意,我已經測試的代碼,但

相關問題