2016-11-30 103 views
0

数据:阵营原住民 - 遍历对象的数组返回值

{ 
       "contextTag": { 
        "value": "Bittersweet", 
        "valueLabel": "Bittersweet" 
       }, 
       "tags": [ 
        { 
         "name": "tag", 
         "value": "Creamy" 
        }, 
        { 
         "name": "tag", 
         "value": "Colorful" 
        }, 
        { 
         "name": "tag", 
         "value": "Bright" 
        } 
       ], 
       "rating": 5, 
       "userNickName": "HelloGames", 
       "userLocation": "UK", 
       "title": "Great!", 
       "reviewText": "Yada yada yada yada", 
       "submissionTime": "30 Nov 16" 
}, 

我现在有这个工作让contextTag valueLabels:

this.props.reviewData.reviews.map(
       (o) => { 
        return o.contextTag && o.contextTag.valueLabel ? o.contextTag.valueLabel.trim() : ''; 
       } 
      ) 

而这对于标签:

this.props.reviewData.reviews.map(
       (o) => { 
        return o.tags && o.tags.value ? o.tags.value.trim() : ''; 
       } 
      ) 

但它是空的。我如何通过标签循环来获取每个值?

回答

0

您可以缓存标记,然后映射标记以获取值。如下图所示:

const tags = this.props.reviewData.reviews.tags; 
const tags_values = (tags ? tags.map((tag) => (tag.value ? tag.value : '') : []); // this an array of the tags values. 

您的代码不会返回你想要什么,因为标签属性是对象的数组,所以让你映射了出来,我上面做的标记值。

希望这有助于。

0

您必须遍历数组的标签,以及,你可以做到这一点的地图功能里面

const allTags = []; 
this.props.reviewData.reviews.map(
       (o) => { 
        if(o.tags) 
         for(i = 0; i < o.tags.length; i++) allTags.push(o.tags[i].value ? o.tags[i].value.trim() : ''); 

        return o.contextTag && o.contextTag.valueLabel ? o.contextTag.valueLabel.trim() : ''; 
       } 
      )