REACT - итерации по объекту Json с несколькими массивами

В настоящее время я получаю объект json из следующего образца URL: https://demo0046512.mockable.io/stream/anycontent

Моя цель - перебрать каждый массив ("зону") и создать переключатель, который будет вызывать разные методы в зависимости от полей type.

Я попытался посмотреть на этот другой похожий случай Итерация по JSON в React но я все еще борюсь с правильной итерацией через объект json, что я делаю неправильно?

Вот код итерации:

interpretJson(jsonObj){

    if (jsonObj){    
      var arr = [];
      Object.keys(jsonObj).map((zone, index) => {
          arr.push(jsonObj[zone]);
          }) 
      return(
        <div>
        <p> interpretJson output: </p>
          <ul>
            {arr.map(item => {
                item.type
              }) 
            }
          </ul>
        </div>  
      )
    }
  }

Отображение вывода предназначено только для того, чтобы увидеть, правильно ли он повторяется, поэтому я могу перейти к случаю переключения, но, видимо, что-то не так.

потому что вы ничего не возвращаете внутри тела карты, используйте это: {arr.map(item => <li>item.type</li> )}

Mayank Shukla 17.03.2018 16:41

попробовал это и <li> {item.type} </li>, но он все еще не печатает типы ...

OhWords 17.03.2018 16:44
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
2
4 538
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вам нужно перебрать ключи объектов зон, а затем в массив зоны 1 и 2, чтобы собрать разные типы и после этого удалить дубликаты.

var jsonObj = {
    "zones":{    
        "zone1":[
            {"type": "text", "url": "http://pastebin.com/raw/1U5vhVzH", "displaytime": "15"},      
            {"type": "image", "url": "http://i.imgur.com/FuD18KJ.jpg", "displaytime": "10"},
            {"type": "video", "url": "http://techslides.com/demos/sample-videos/small.mp4" }
        ],
        "zone2":[
            {"type": "text", "url": "http://pastebin.com/raw/1U5vhVzH", "displaytime": "16"},      
            {"type": "image", "url": "http://i.imgur.com/FuD18KJ.jpg", "displaytime": "11"},
            {"type": "video", "url": "http://techslides.com/demos/sample-videos/small.mp4" }
        ]
    }
}

      var arr = [];
      Object.keys(jsonObj.zones).forEach((zone, index) => {
              jsonObj.zones[zone].forEach((obj, idx) => {
                  arr.push(obj.type)
              })
          })
          
     arr = arr.filter((x, i, a) => a.indexOf(x) == i) // remove duplicate entries
console.info(arr);

Совершенно верно, сэр. Итак, моя проблема заключалась в том, что я передавал группу внутренних объектов одновременно с jsonObj [zone] вместо одного за другим?

OhWords 17.03.2018 17:11

Рад, что это помогло тебе

Shubham Khatri 17.03.2018 17:16

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