React Native Flatlist-如何遍历嵌套对象

时间:2020-04-16 03:44:01

标签: javascript react-native react-native-flatlist nested-object

我有一个./jsonData.json文件返回的JSON对象。

在此文件中,我有以下数据:

注意:这是从文件加载的整个JSON数据。

import QuizData from './quizData.json'

这是一个新应用,因此QuizData为以下所有内容:

[
    {
        "id": 1,
        "name": "Lesson 1",
        "topics": [
            {
                "topicID": 1,
                "topicName": "Science",
                "topicDescription": "Science quiz questions"
            },
            {
                "topicID": 2,
                "topicName": "General Knowledge",
                "topicDescription": "General Knowledge Quiz Questions"
            }
        ]
    }
]

我正在尝试为找到的每个主题获取主题名称,并将其作为文本发布。

这是我的代码:

<FlatList
    data={QuizData}
    renderItem={({ item, index }) =>
        <View>
            <Text>{item.topics.topicName}</Text>
        </View>
    }
    keyExtractor={(item) => item.topicID.toString()}
/>

我也尝试过:

{item.topics.[index].topicName}

{item.topics[index][topicName]}

但是我得到了错误:

未定义不是对象。

然后我想也许它应该是:

data={QuizData.topics}

,然后将renderItem更改为:

{item.topicName}

这一次没有错误,但是也没有文本输出到屏幕上。

2 个答案:

答案 0 :(得分:4)

您可以这样做

import * as React from 'react';
import { Text, View, FlatList } from 'react-native';

import data from './data.json';

export default function App() {
  return (
    <FlatList
      data={data}
      renderItem={({ item, index }) => (
        <View>
          {item.topics.map((v, i) => (
            <>
              <Text>{v.topicName}</Text>
              <Text>{v.topicDescription}</Text>
            </>
          ))}
        </View>
      )}
    />
  );
}

data.json是根目录中包含您数据的json文件。

答案 1 :(得分:0)

您需要有两张地图:

YOUR_OBJECT.map(item => Object.keys(item.topics).map(index => (
   return console.log(item.topics[index].topicName)
   )
));