Не пойманный (в обещании) Ошибка типа: Не удается прочитать свойства неопределенного (чтение «0») — когда все объекты не определены-неопределенные

#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)