2017-06-12 92 views
0

我有這array of data有4個對象,手動選擇其中之一,我不知道如何獲得所有的信息。例如,我想所有這些都是內部「興趣點」(另一種陣列)...我想應該是這樣的數據:React Native - 另一個地圖函數裏面的映射函數?

{api.monuments.map((monumento, index) => (
    {monumento.pois.map((poi, index2) => (
     <TouchableHighlight 
      onPress={() => this.onClick(convento)} 
      style={styles.monumentoContainer} 
      key={index2} 
     > 
      <Image style={styles.monumentoPic} source={{uri:'http://192.168.56.1:3000/'+poi.image}}> 
       <View style={styles.monumentoTitleContainer}> 
        <Text style={styles.monumentoTitle}>{poi.name}</Text> 
           </View> 
      </Image> 
     </TouchableHighlight> 
    ))} 
))} 

但它不是 - image of the error,所以我該怎麼辦呢?

另一個問題是:因爲我有一個包含4個對象的數組,並且每個對象都有一個特定的類別,所以我如何才能只選擇具有'category'=='xxxxx'的對象?

希望你能幫助我!謝謝

回答

0

可以按如下方式做到這一點:

var api = [ 
      { 
       category: "Cat_name", 
       monuments: [ 
          { 
           item: 'item1', 
           pois: [ 
             {name: 'poi1'}, 
             {name: 'poi2'}, 
             {name: 'poi3'}, 
             {name: 'poi4'} 
           ] 
          } 
       ] 
      }, 
      { 
      category: "Cat_name1", 
      monuments: [ 
          { 
          item: 'item2', 
          pois: [ 
            {name: 'poi5'}, 
            {name: 'poi6'}, 
            {name: 'poi7'}, 
            {name: 'poi8'} 
          ] 
          } 
      ] 
      } 
] 

要獲得所有pois你可以按如下做一些事情:

{api.map(i => i.monuments.map(j => j.pois.map(k => k.name)))} 

如果你要檢查類別名稱,你可以做是這樣的:

{data.map(i => { 
    if (i.category === "Cat_name1"){ 
     return i.monuments.map(j => j.pois.map(k => k.name)) 
    }    
})} 

Here is fiddle.

+1

非常感謝你! 我做了[這個](http://prntscr.com/fite3x),它工作,我想它的一切正確或不是? xD 另一件事,我不需要每個元素的唯一鍵嗎? – Proz1g

+0

@ Proz1g是的。你可以在你的數據中使用uniq。例如'古蹟'有一個id。對於poi,你可以使用'name'。或者你可以使用'map'索引。 '{api.map((i,index1)=> i.monuments.map((j,index2)=> j.pois.map((k,index)=> k.name)))}'。從循環數據中使用uniq總是更好,但索引也很好。 – Boky

+1

好的。謝謝,你救了我一天:) 最好的問候! – Proz1g

相關問題