我现在可以访问的唯一数据是数组的开头部分:
[
{
/*start*/
"username" : "Bob",
"password":"123456",
"bio":"Hi",
/*End*/
"data":
[
{
"pet" : "dog",
"age" : "20",
"city" : "5"
},
{
"pet" : "cat",
"age" : "18",
"city" : "7"
}
]
}
]
我也可以访问data
数组的一部分,但我正在尝试访问所有这些数组。例如:{item.data[1].pet}
。我尝试使用for循环但是没有成功。我也在使用react-native平面列表,dataSource: responseJSON.data
也没有为我工作。我确定必须有办法访问pet
的所有值,而不是每次只访问一个,我只是不知道如何。
此外,由于我是初学者,任何提示都将很高兴。
编辑:尝试从JSX外部循环:
var itemList = [];
for (var i = 0; i < responseJSON[0].data.length; i++) { itemList.push(<Text> {responseJson[0].data[i].pet}</Text>); }
我把它从render()
中取出然后我拿itemList
并坚持下去:
<FlatList
data={ this.state.dataSource}
ItemSeparatorComponent = {this.FlatListItemSeparator}
renderItem={({item}) => <View>
{itemList}
</View>
}
keyExtractor={(item, index) => index}
/>
现在它不理解itemList是一个变量。我收到语法错误。
编辑2:感谢大家我唯一需要帮助的是在React Native中将变量放在componentDidMount
内。
答案 0 :(得分:1)
你可以在javascript中这样做:
var json = {"data":[{"pet":"dog","age":"20","city":"5"},{"pet":"cat","age":"18","city":"7"}]};
for (var i = 0; i < json.data.length; i++) {
var object = json.data[i];
console.log(object);
console.log(object.pet, object.age, object.city);
}
答案 1 :(得分:1)
我对React没有任何经验,但从我发现的情况来看,似乎应该这样做:
const responseJson = [
{
/*start*/
"username" : "Bob",
"password":"123456",
"bio":"Hi",
/*End*/
"data":
[
{
"pet" : "dog",
"age" : "20",
"city" : "5"
},
{
"pet" : "cat",
"age" : "18",
"city" : "7"
}
]
}
];
const listItems = responseJson[0].data.map((details) =>
<li>{details.pet}</li>
);
ReactDOM.render(
<ul>{listItems}</ul>,
document.getElementById('root')
);
我得到的输出是:
- 狗
- 猫
答案 2 :(得分:0)
试试这个循环:
for (var i = 0; i < responseJSON[0].data.length; i++) {
alert(responseJSON[0].data[i].pet);
}
这里的工作示例:
答案 3 :(得分:-1)
为什么不使用 Lodash 库将responseJson中的所有数据转换为对象,然后从中获取数据对象并将其分配给变量,然后将其转换回阵列。之后,您将数据源更改为您获得的数组
请参阅Lodash的文档here