Как отобразить вложенный массив?

Я получаю ответ от конечной точки, который выглядит следующим образом:

[[{"1":"91"}],[{"1":"1"}],[{"1":"0"}],[{"1":"0"}],[{"1":"0"}],[{"1":"0"}],[{"1":"0"}],[{"1":"0"}]]

Я извлек их и получаю результаты, но не могу их отобразить. Это то, что я пытался:

render() {
        const {count} = this.state;
        return (
            <div>
                {count.count && count.count.map(item => (
                    item.value.map(data => (
                        data.value.map(x => (
                            <p>{x.value}</p>
                        ))
                    ))
                ))}
            </div>
        )
    }

Я ожидаю, что на выходе будут все числа, указанные в ответе json. Бывший. 91 1 0 0 0 и т. д.

пожалуйста, предоставьте свой образец this.state.count

Ashish 28.05.2019 14:09

Я не уверен, что происходит. Вы показываете один объект, а обрабатываете его как совершенно другой. Вы используете 3 map, в то время как у вас есть 2 уровня в объекте. Кроме того, откуда взялась value поддержка? В объекте нет value. И вы ожидаете, что результат будет содержать 94.., но у вас нет 94 в объекте. Откуда count? и т.п.

Mosh Feu 28.05.2019 14:11

Есть ли какая-либо ошибка, которую вы получаете?

Dani Vijay 28.05.2019 14:12

@DaniVijay Нет, я не получаю никаких ошибок.

josh 28.05.2019 14:24

@Ashish state = { count: {} };

josh 28.05.2019 14:30

Возможно, вы могли бы попытаться воспроизвести проблему с помощью таких инструментов, как stackblitz.com/fork/реакция. Так нам будет намного проще вам помочь..

Mosh Feu 28.05.2019 14:51
stackblitz.com/edit/react-6naael @MoshFeu
josh 28.05.2019 15:06
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
7
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Прежде всего, структура массива, который вы пытаетесь повторить, похожа на массив массивов с объектами внутри. Итак, сначала начните итерировать первый и второй массивы, а затем итерируйте объект внутри. Object.keys можно использовать для этого.

Вы можете получить к нему доступ следующим образом:

...
    <div>
      {count &&
        count.length > 0 &&
        count.map(
          item =>
            item.length > 0 &&
            item.map(
              el =>
                Object.keys(el).length > 0 &&
                Object.keys(el).map(val => <p>{el[val]}</p>)
            )
        )}
    </div>
...

Демо Codesandbox здесь

Демонстрация Stackblitz здесь

Пожалуйста, поделитесь своим состоянием. Это как count: {count: [[{"1":"91"}],[{"1":"1"}],[{"1":"0"}],[{"1":"0"}],[{"1":"0"}‌​],[{"1":"0"}],[{"1":‌​"0"}],[{"1":"0"}]]}, верно?

Dani Vijay 28.05.2019 14:31
count: Array[8] 0: Array[1] 0: {…} 1: "91"
josh 28.05.2019 14:33

Затем напрямую повторите count вместо count.count. Я отредактировал ответ. См. codeandbox тоже.

Dani Vijay 28.05.2019 14:34
stackblitz.com/edit/react-55mj54 ^ Массив добавлен статически, поскольку API недоступен. Также добавлена ​​проверка на count пусто или нет.
Dani Vijay 28.05.2019 15:16

Другие вопросы по теме