ReactJS / Javascript: функция карты и JSON

ReactJS / Javascript: функция карты и JSON В консоли данные загружаются с файлом JSON, который я пытаюсь визуализировать (см. Ниже). Сообщение об ошибке от Chrome: TypeError: data.map is not a function. Я не нашел хороших примеров функции d3.extent, поэтому мне здесь нужна помощь. Компонент Graph выглядит так:

constructor({data=[]}) {
  console.info('construc data:', data)
    const times = d3.extent(data.map(action => action.timestamp))
    const range = [50, 450]
    super({data})
    this.state = {data, times, range}
}

Файл JSON:

{data: 
     action: 
        {action: [{action: "Changed", timestamp: 1499348050,…},…]}

Включенный вами фрагмент JSON недействителен.

Derek 朕會功夫 25.08.2018 09:27

Итак, как мне разобрать его с помощью d3.extent?

N6DYN 25.08.2018 09:30

Я думаю, мне нужно сделать вложенный d3.extent? Если так, не используйте для этого. Все примеры в сети пока имеют плоские JSON / массивы.

N6DYN 25.08.2018 09:37

попробуйте data.action.action.map(action => . . .)

Helping hand 25.08.2018 09:42

Функция карты не работает с объектом. Функция карты, связанная с массивом.

Sagar 25.08.2018 09:44

@Helpinghand ошибки.

N6DYN 25.08.2018 09:45

@SagarGavhane есть идеи, как это исправить?

N6DYN 25.08.2018 09:46

вы можете предоставить точный объект данных?

Sagar 25.08.2018 10:02

Только что добавил скриншот.

N6DYN 25.08.2018 10:04

Если свойство действия представляет собой массив объектов, попробуйте это. data.action.map(action => action.timestamp);

Sagar 25.08.2018 10:10

TypeError: невозможно прочитать карту свойства undefined

N6DYN 25.08.2018 10:36

Не могли бы вы попробовать data.action.map?

Tan Duong 25.08.2018 10:48

по-прежнему нет: TypeError: не удается прочитать "карту" свойства undefined

N6DYN 25.08.2018 10:52

Все еще получаю: TypeError: не удается прочитать свойство "карта" неопределенного значения.

N6DYN 25.08.2018 11:31
Поведение ключевого слова "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) для оценки ваших знаний,...
1
14
876
1

Ответы 1

Неправильный JSON

Ваш файл JSON недействителен, так как ваши ключи должны быть заключены в кавычки. Используйте Валидатор JSON, чтобы убедиться, что у вас правильный файл JSON.


Вызов .map() на Object вызывает TypeError

Когда ваши данные загружаются из файла JSON (и по умолчанию не используется пустой массив, установленный вашим конструктором), убедитесь, что он имеет форму Array, потому что вызов метода .map() на Object вместо Array вызывает TypeError . Это связано с тем, что .map() является частью прототипа Array, а d3.extent(array) требует Array в качестве аргумента.

Read more about JavaScript's Array

Read more about JavaScript's Object


Правильный подход

Если ваш JSON правильно загружен в объект data, должно работать следующее:

d3.extent(data.action.action.map(action => action.timestamp))

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