2017-07-29 51 views
1

我通過多個對象進行映射。 [{name:"y", country:"US", cities:[obj,obj,ob]},{name:"y", country:"US", cities:[obj,obj,ob]}]在反應中呈現對象的嵌套陣列

我怎樣才能嵌套一個循環,所以我第一遍迭代對象,然後遍歷(在這個例子中)城市?謝謝!

我的渲​​染功能,無需嵌套的樣子看起來是這樣的:

render() { 
    const persons = this.state.name.map((item, i) => { 
    return (
     <div> 
     <h5> {item.name} </h5> 
     <h5> {item.country} </h5> 
     //here I would like to show the cities 
     </div> 
    ); 
    }); 
    return (
    <div> 
     <div className = "panel-list"> 
     All: {persons} 
     </div> 
    </div> 
); 
} 

城市對象的例子:

[{visitors:34, rating:4}, 
{visitors:1234, rating:1}, 
{visitors:124, rating:2}] 

回答

3

,您可以利用嵌套地圖的繪製在內部子obejcts以及像

 render() { 
      const persons = this.state.name.map((item, i) => { 
       return (
        <div> 
         <h5> {item.name} </h5> 
         <h5> {item.country} </h5> 
         <h4>{item.cities.map((city) => { 
          return (<li>{/* city object details here*/}</li>) 
         })}</h4> 
        </div>); 
      }); 
      return (
      <div> 
       <div className = "panel-list"> 
        All: {persons} 
       </div> 
      </div> 
      ); 
     } 
+0

感謝您的回答。如果我使用你的解決方案,我會得到錯誤的結果。可以說我(作爲例子)5個國家。每個國家有5個城市。然後,我將獲得法國加所有5個國家的所有城市,而不僅僅是一個 – javascripting

+0

正如我從您的數據對象「{名稱:」y「,國家:」美國「,城市:[obj,obj,ob]}」城市是美國國內的城市,是嗎?你的城市對象是怎樣的。我想你還需要在你的問題中加上 –

+0

我用國家對象編輯了我的問題。所以如果我會做

{city.visitor}

我不會得到每個國家,但它會看起來像法國,(遊客)34,1234,124 – javascripting