2016-11-30 49 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() : ''; 
       } 
      ) 
相關問題