es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Ejecuta JavaScript en Bubble con bucles para comparar datos de una API JSON.

Estoy construyendo una aplicación con Bubble y tengo el complemento Toolbox que me permite usar el paso “Ejecutar JavaScript” en un flujo de trabajo.

Desde la siguiente URL de la API de la NASA, planeo leer y analizar 20 años de datos con valores para cada mes (240 valores):
https://power.larc.nasa.gov/api/temporal/monthly/point?parameters=ALLSKYSFCSW_DNI&community=RE&longitude=48.0000&latitude=27.0000&format=JSON&start=2001&end=2020

A continuación, lo que intento lograr (con partes de código faltantes):

  1. Leer los datos json de la API y analizarlos en un objeto de JavaScript.

const response = await fetch(api_url);

const data = await response.json();

  1. Iterar a través de los valores de interés del objeto. Dentro del bucle, calcular los valores promedio para cada mes. Enero, Febrero, Marzo, etc.

for (const entry of Object.entries(data.properties.parameters.ALLSKYSFCSW_DNI)){}

  1. Almacenar los 12 valores promedio anteriores en la base de datos de Bubble.

  2. Iterar a través de los 12 valores promedio para encontrar los dos meses con el valor más alto y más bajo.

  3. Almacenar los valores de los meses más alto/bajo anteriores en la base de datos de Bubble. Por ejemplo, enero como el valor promedio más bajo.

He aprendido exitosamente cómo realizar algunas operaciones básicas de JavaScript en Bubble. Leer valores individuales de la API, mostrarlos en la página y almacenarlos en la base de datos de Bubble. Sin embargo, no sé cómo leer los valores en un array de JS y hacer los bucles y comparaciones necesarios.

Encontré esta pregunta más antigua, pero se trata de un archivo de texto en lugar de un json en mi caso.
https://stackoverflow.com/questions/51548012/get-an-array-of-values-using-fetch-api-javascript

Agradezco cualquier consejo y dirección. Gracias.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para leer los valores en una matriz de JavaScript, simplemente puedes agregarlos a una matriz vacía dentro de tu bucle. Aquí tienes un ejemplo de código:

    const response = await fetch(api_url);
    const data = await response.json();
    
    const allskyValues = [];
    
    for(const entry of Object.entries(data.properties.parameters.ALLSKY_SFC_SW_DNI)){
        const monthValues = entry[1];
    
        // recorre los valores mensuales y calcula el promedio
        const average = monthValues.reduce((acc, curr) => acc + curr, 0) / monthValues.length;
    
        // añade el valor promedio a la matriz
        allskyValues.push(average);
    }
    
    // almacena la matriz en la base de datos de Bubble
    Bubble_fn_store_data(allskyValues);
    
    // encuentra los valores más altos y más bajos
    const highestValue = Math.max(...allskyValues);
    const lowestValue = Math.min(...allskyValues);
    
    // encuentra los índices de los valores más altos y más bajos
    const highestIndex = allskyValues.indexOf(highestValue);
    const lowestIndex = allskyValues.indexOf(lowestValue);
    
    // almacena los meses más altos y más bajos en la base de datos de Bubble
    const months = ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio",
                    "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"];
    Bubble_fn_store_data({highestMonth: months[highestIndex], lowestMonth: months[lowestIndex]});
    

    En este código, creamos una matriz vacía llamada allskyValues y agregamos los promedios mensuales en ella. Luego almacenamos la matriz en la base de datos de Bubble utilizando la función Bubble_fn_store_data.

    A continuación, utilizamos las funciones Math.max y Math.min para encontrar los valores más altos y más bajos en la matriz. Obtenemos los índices de estos valores utilizando el método indexOf.

    Finalmente, utilizamos los índices para obtener los nombres de los meses más altos y más bajos de una matriz de nombres de meses, y almacenamos estos valores en la base de datos de Bubble.

    Ten en cuenta que en Bubble, es posible que necesites utilizar una función diferente para almacenar los datos en la base de datos, dependiendo de cómo hayas configurado tu aplicación.

Comments are closed.