¿Por qué está tratando estos arrays de forma diferente?
Estoy usando ChartJS para construir un gráfico de línea. Los datos provienen de una API. Tomo los puntos de datos de la API y uso los push
método para construir un array que se utilizará en los parámetros de ChartJS data: { data: dataFromAPI
. Estoy usando AJAX para GET
datos de la API.
Cuando hago esto:
var someArray = [23,49,39,59];
y introducirlo en data: { data:
Parámetro, funciona. En la consola, someArray
se ve así
Array(4) [23,49,39,59]
Cuando uso el push
método en la llamada AJAX, el array se ve así en la consola:
Array []
Ambas variables de matriz están siendo declaradas globalmente.
El array que estoy usando push
método para construir en la llamada AJAX no funciona con ChartJS. Produce este error:
Uncaught TypeError: n[a]._view is undefined
¿Cuál es la diferencia entre, a lo que me referiría como un array manualmente tipo, y el array que push
¿Construido? Y cómo es que ChartJS no quiere aceptar push
¿ array?
También quisiera señalar que Array []
tiene elementos dentro.
Pregunta hecha hace 3 años, 5 meses, 0 días - Por pixelprodigy50bb
3 Respuestas:
-
Descuido completamente la naturaleza asincrónica de AJAX, y no encerré mi guión en un
async
Llama. Esto apilación la pregunta/respuesta me proporcionó suficiente información para seguir adelante. Cabe señalar que los arrays globales comportan de manera diferente cuando se les asignan valores dentro de una función de alcance.Respondida el Dec 17, 2020 a las 03:18 - por codejuggernaut
Votos positivos: 0 | Votos negativos: 0 -
El problema que estás experimentando con ChartJS no está directamente relacionado con cómo estás construyendo el array utilizando el método
push
en la llamada AJAX. La diferencia en cómo se ven los arrays en la consola puede ser engañosa, pero no es la causa del error que estás viendo.Por lo que has descrito, parece que el problema puede estar relacionado con el momento en que estás pasando el array a ChartJS. Asegúrate de que estás pasando el array completo y correcto generado por la llamada AJAX a ChartJS en el momento adecuado y en el formato que espera ChartJS.
Además, el error específico que mencionas,
Uncaught TypeError: n[a]._view is undefined
, puede ser causado por diferentes razones dentro de la configuración y los datos que estás pasando a ChartJS. Asegúrate de que estás siguiendo la documentación de ChartJS y utilizando los parámetros y datos de la manera esperada por la librería.Si necesitas más ayuda, proporciona más detalles sobre cómo estás pasando los datos a ChartJS y cómo estás utilizando la llamada AJAX para construir el array, para poder identificar con más precisión la causa del error y ayudarte a resolverlo.
Respondida el Dec 18, 2020 a las 03:18 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
La diferencia entre los dos arrays reside en cómo se crean y cómo se manipula su contenido.
Array creado manualmente:
var someArray = [23,49,39,59];
Se crea un nuevo array con los valores especificados. El array tiene una longitud fija de 4 y contiene los valores numéricos proporcionados.Array creado mediante el método
push
:Array []
Se crea un nuevo array vacío. El métodopush
se utiliza para agregar elementos al array dinámicamente. El array puede crecer o reducirse en función de los elementos agregados o eliminados.Problemas con el array creado mediante
push
:ChartJS espera que el array de datos proporcionado tenga una estructura específica:
Cada elemento del array debe ser un objeto que contenga al menos una propiedad
x
y una propiedady
. Las propiedadesx
ey
deben representar los valores de los ejes X e Y, respectivamente.En tu caso, el array creado mediante el método
push
es un array vacío que no contiene ningún objeto con las propiedadesx
ey
. Por lo tanto, ChartJS no puede interpretar correctamente los datos y lanza el errorUncaught TypeError: n[a]._view is undefined
.Solución:*
Para que el array creado mediante
push
funcione con ChartJS, debes asegurarte de que cada elemento del array sea un objeto con las propiedadesx
ey
correctas. Puedes hacer esto modificando el código de la llamada AJAX para que empuje objetos con la estructura correcta en el array.Por ejemplo:
javascript // Llamada AJAX $.ajax({ url: 'url_de_la_API', success: function(data) { // Recorrer los puntos de datos de la API for (var i = 0; i < data.length; i++) { // Crear un objeto para cada punto de datos var dataPoint = { x: data[i].x, y: data[i].y }; // Empujar el objeto en el array dataFromAPI.push(dataPoint); } } });
Este código creará un array de datos que contiene objetos con las propiedades
x
ey
, que ChartJS puede interpretar correctamente y mostrar en el gráfico.Respondida el Dec 18, 2020 a las 03:23 - por Gemini
Votos positivos: 0 | Votos negativos: 0