Trabajando en la visualización de datos con d3.js. Soy bastante novato en javascript, pero vengo aquí tratando de llegar a la raíz de mi problema.
Estoy tratando de trazar algunos datos basados en películas, en los que cada punto de datos es el tipo de datos de cadena. Por lo tanto, tengo que convertir las fechas al tipo de datos Fecha, y las Clasificaciones de películas al tipo de datos Número o Flotante para que d3 trace los datos correctamente, de lo contrario, hay un error.
Más o menos, los datos se almacenan en una matriz, que contiene otras 11 matrices, una para cada crítico de cine, en la que cada matriz de crítico de cine contiene 237 objetos para cada película vista ese año, en la que cada objeto se ve como
{ "key": "Derek", "Date": "2019-01-25T05:00:00.000Z", "value": 5, "Movie": "The Butterfly Effect", "Pickedby": "Dan" }Donde clave es el crítico de cine y Pickedby es la persona que eligió la película.
Aquí está el código que estoy usando para convertir una fecha como 1/25/2019 en "2019-01-25T05:00:00.000Z" y estoy tratando de convertir el elemento de valor (de una cadena) en un número o flotante Número de punto. (Algunas calificaciones pueden ser como 3.5, 6.5, etc.)
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) } } La línea de código de conversión de fecha funciona como se esperaba. Sin embargo, convertir el elemento de value en un número o flotante está provocando un error de tipo Uncaught (in promise) TypeError: Cannot read properties of undefined (reading '0') .
La cuestión es que todos los datos de elementos de valor a través de toda la matriz son una cadena. No hay un problema indefinido. Claro, algunos valores son (x) o algún otro carácter alfabético, pero eso debería convertirse al menos a NaN, y lo es para algunos.
¿Alguna idea sobre por qué podría estar surgiendo este error, dada la información que he proporcionado? Probablemente siempre pueda proporcionar más detalles.
¡Gracias!
Parece que se cometió un error tipográfico en el código, donde no está accediendo al valor correcto en el envío a Número.
En vez de:
series[j][i].value = Number(series[i][j].value)debería ser:
series[j][i].value = Number(series[j][i].value)