Maison  >  Questions et réponses  >  le corps du texte

Lorsque des incohérences sont rencontrées lors du remplissage d'un tableau avec des données JSON, un tableau vide sera affiché dans la console.

<p>J'essaie d'obtenir des données à l'aide de l'API AlphaVantage et je souhaite stocker tous les dividendes payés par une action donnée dans un tableau. J'essaie juste d'économiser les dividendes maintenant, mais à l'avenir, j'aimerais pouvoir associer les dividendes à des dates précises. <br /><br />Fonctions de récupération de données :</p><p><strong></strong></p> <pre class="brush:php;toolbar:false;">async function fetchTimeSeriesDailyAdjusted (ticker) { //Fonction de récupération pour obtenir la clôture quotidienne et les dividendes const apiTimeSeriesDailyAdjusted = `https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=${symbol}&apikey=${apiKey}` //Lik de l'API - mettre à jour le symbole essayer { const réponse = wait fetch (apiTimeSeriesDailyAdjusted); const data = attendre réponse.json(); const historicDividend = []; //Tableau des dividendes for (let date in data['Time Series (Daily)']) { // Ceci devrait faire passer le code à travers tout le JSON historicDividend = input ['7. montant du dividende']; // Ceci devrait stocker le dividende pendant que la boucle for "continue" } console.log(historicalDividend); //Journal de la console pour voir le dividende return historicDividend; //Valeur que la fonction doit retourner } attraper (erreur) { console.error('Erreur lors de la récupération d'apiTimeSeriesDailyAdjusted'); //Journal de l'erreur } }</pré> <p>C'est la fonction que j'ai créée, mais comme je peux le voir, et probablement vous pouvez le voir aussi, cela ne fonctionne pas. </p>
P粉438918323P粉438918323465 Il y a quelques jours479

répondre à tous(1)je répondrai

  • P粉739942405

    P粉7399424052023-08-04 00:56:41

    Le problème est que vous déclarez une variable appelée historicDividend, l'initialisez dans un tableau vide, puis réaffectez l'intégralité de la variable aux données de la série chronologique à chaque itération, ce qui signifie que vous écrasez la valeur à chaque fois. De plus, l'entrée n'est pas définie, je pense que vous souhaiterez peut-être utiliser la date.

    Pour résoudre tous ces problèmes, vous devez utiliser la méthode map(), qui accepte un tableau, boucle dessus et crée un nouveau tableau en utilisant la valeur de retour de la fonction de rappel.

    Autre conseil : vous devez vérifier le code d'état HTTP de la réponse pour vous assurer que vous obtenez la réponse attendue.

    Voici une version de votre code qui résout les deux problèmes :


    async function fetchTimeSeriesDailyAdjusted(ticker) {
      //Fetch function to get the daily close and the dividends
      const apiTimeSeriesDailyAdjusted = `https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=${symbol}&apikey=${apiKey}`; //Lik of the API - update the symbol
    
      try {
        const response = await fetch(apiTimeSeriesDailyAdjusted);
        // Check for HTTP response code
        if (!response.ok) {
          throw new Error(
            $`Fetching daily time series data failed with status code '${response.status}'`
          );
        }
        const data = await response.json();
        const historicalDividend = data["Time Series (Daily)"].map(
          (entry) => entry["7. dividend amount"]
        );
    
        console.log(historicalDividend); //Console log to see the dividend
    
        return historicalDividend; //Value that the function must return
      } catch (error) {
        console.error("Error fetching apiTimeSeriesDailyAdjusted"); //Log of the error
      }
    } 

    répondre
    0
  • Annulerrépondre