#javascript #d3.js
Вопрос:
Работа над визуализацией данных с d3.js. Я довольно новичок в javascript, но я пришел сюда, пытаясь добраться до сути моей проблемы.
Я пытаюсь построить некоторые данные на основе фильмов, в которых каждая точка данных является строковым типом данных. Поэтому я должен преобразовать даты в тип данных Даты, а рейтинги фильмов-в тип данных числа или с плавающей точкой, чтобы d3 правильно отображал данные, иначе произойдет ошибка.
В значительной степени данные хранятся в массиве, который содержит 11 других массивов, по одному для каждого кинокритика, в котором каждый массив кинокритиков содержит 237 объектов для каждого фильма, просмотренного в этом году, в котором каждый объект выглядит так
{
"key": "Derek",
"Date": "2019-01-25T05:00:00.000Z",
"value": 5,
"Movie": "The Butterfly Effect",
"Pickedby": "Dan"
}
Где ключ-кинокритик, а Пикедби-человек, который выбрал фильм.
Вот код, который я использую для преобразования даты, например 1/25/2019
, в "2019-01-25T05:00:00.000Z"
и пытаюсь преобразовать элемент значения (из строки) в число или число с плавающей запятой. (Некоторые оценки могут быть 3,5, 6,5 и т.д.)
for (let j = 0; j < series.length; j ) {
for (let i = 0; i <series[j].length; i ){
series[j][i].Date = new Date(series[j][i].Date)
series[j][i].value = Number(series[i][j].value)
}
}
Строка кода преобразования даты работает должным образом.
Однако преобразование value
элемента в число или с плавающей Uncaught (in promise) TypeError: Cannot read properties of undefined (reading '0')
точкой приводит к возникновению ошибки.
Дело в том, что все данные элементов значений во всем массиве представляют собой строку. Нет никакой неопределенной проблемы. Конечно, некоторые значения (x) или какой-либо другой алфавитный символ, но это должно быть преобразовано, по крайней мере, в NaN, и для некоторых это так.
Есть какие-либо мысли о том, почему могла возникнуть эта ошибка, учитывая предоставленную мной информацию? Я всегда могу, вероятно, предоставить более подробную информацию.
Спасибо!
Комментарии:
1. Отладьте значение
series[i]
иseries[i][j]
перед началом работыvalue
Ответ №1:
Похоже, в коде была допущена опечатка, когда вы не получаете доступ к правильному значению в приведении к номеру.
Вместо:
series[j][i].value = Number(series[i][j].value)
это должно быть:
series[j][i].value = Number(series[j][i].value)