React Native - 循环遍历对象数组以返回值

时间:2016-11-30 16:15:46

标签: react-native react-jsx jsx

数据:

{
                "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() : '';
                }
            )

但它又回来了。如何循环标记以获取每个值?

2 个答案:

答案 0 :(得分: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.

您的代码没有返回您想要的内容,因为tags属性是一个对象数组,因此要获取标记值,您必须像我上面那样映射它。

希望这会有所帮助。

答案 1 :(得分:0)

你也必须迭代标签数组,你可以在map函数

中完成
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() : '';
                }
            )