2017-06-12 48 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

相关问题