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
2023-08-03 11:50:47
<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>
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 } }