配列に JSON データを入力するときに不一致が発生すると、空の配列がコンソールに表示されます。
P粉438918323
2023-08-03 11:50:47
<p>AlphaVantage API を使用してデータを取得しようとしていますが、特定の株式によって支払われたすべての配当を配列に格納したいと考えています。今は配当金を節約しようとしているだけですが、将来的には配当金を特定の日付に関連付けられるようにしたいと考えています。 <br /><br />データを取得する関数:</p><p><strong></strong></p>
<pre class="brush:php;toolbar:false;">async function fetchTimeSeriesDailyAdjusted (ticker) { //毎日の終値と配当を取得する関数を取得します
const apiTimeSeriesDailyAdjusted = `https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=${symbol}&apikey=${apiKey}`; //API の機能 - シンボルを更新します
試す {
const 応答 = await fetch(apiTimeSeriesDailyAdjusted);
const data = 応答を待ちます.json();
consthistoryDividend = []; //配当の配列
for (let date in data['Time Series (Daily)']) { //この for により、コードはすべての JSON を通過するようになります。
historyDividend =entry ['7.配当金額']; //これは、for ループが「実行」されている間、配当を保存する必要があります。
}
console.log(historyalDividend); //配当を確認するためのコンソールログ
returnhistoryDividend; //関数が返さなければならない値
} キャッチ (エラー) {
console.error('apiTimeSeriesDailyAdjusted の取得エラー'); // エラーのログ
}
}</pre>
<p>これは私が作成した関数ですが、ご覧のとおり、おそらく皆さんもおわかりいただけると思いますが、機能しません。 </p>
問題は、historyDividend という変数を宣言し、それを空の配列に初期化し、反復ごとに変数全体を時系列データに再割り当てすることです。つまり、毎回値を上書きすることになります。また、エントリは未定義なので、日付を使用するとよいと思います。
これらすべての問題を解決するには、map() メソッドを使用する必要があります。このメソッドは、配列を受け取り、それをループし、コールバック関数の戻り値を使用して新しい配列を作成します。
もう 1 つのヒント: 応答の HTTP ステータス コードをチェックして、予期した応答が得られていることを確認する必要があります。
両方の問題を修正したコードのバージョンは次のとおりです:
リーリー