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粉438918323
P粉438918323 2023-08-03 11:50:47
0
1
488
<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粉438918323
P粉438918323

répondre à tous(1)
P粉739942405

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
  }
} 
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal