Wenn beim Füllen eines Arrays mit JSON-Daten Inkonsistenzen auftreten, wird in der Konsole ein leeres Array angezeigt.
P粉438918323
2023-08-03 11:50:47
<p>Ich versuche, mithilfe der AlphaVantage-API einige Daten abzurufen, und möchte alle von einer bestimmten Aktie gezahlten Dividenden in einem Array speichern. Ich versuche gerade, Dividenden zu speichern, aber in Zukunft möchte ich Dividenden bestimmten Daten zuordnen können. <br /><br />Funktionen zum Abrufen von Daten:</p><p><strong></strong></p>
<pre class="brush:php;toolbar:false;">asynchrone Funktion fetchTimeSeriesDailyAdjusted (ticker) { //Abruffunktion zum Abrufen des Tagesabschlusses und der Dividenden
const apiTimeSeriesDailyAdjusted = `https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=${symbol}&apikey=${apiKey}`; //Lik der API – Symbol aktualisieren
versuchen {
const Response = waiting fetch(apiTimeSeriesDailyAdjusted);
const data = Warten auf Antwort.json();
const HistoricalDividend = []; //Array der Dividenden
for (let date in data['Time Series (Daily)']) { //Dieses for sollte dazu führen, dass der Code den gesamten JSON durchläuft
HistoricalDividend = Eintrag ['7. Dividendenbetrag']; //Dies sollte die Dividende speichern, während die for-Schleife „geht“
}
console.log(historicalDividend); //Konsolenprotokoll, um die Dividende anzuzeigen
return HistoricalDividend; //Wert, den die Funktion zurückgeben muss
} Catch (Fehler) {
console.error('Fehler beim Abrufen von apiTimeSeriesDailyAdjusted'); //Protokoll des Fehlers
}
}</pre>
<p>Dies ist die Funktion, die ich erstellt habe, aber wie ich sehen kann, und wahrscheinlich auch Sie, funktioniert sie nicht. </p>
问题在于你声明了一个名为historicalDividend的变量,并将其初始化为空数组,然后在每次迭代中重新分配整个变量给时间序列数据,这意味着你会覆盖每次的值。此外,entry未定义,我认为你可能想使用date。
为了解决所有这些问题,你应该使用map()方法,它接受一个数组,循环遍历它,并使用回调函数返回值创建一个新数组。
作为另一个提示:你应该检查响应的HTTP状态码,以确保你获得了预期的响应。
下面是修复了这两个问题的你的代码版本:
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 } }