Apabila ketidakkonsistenan ditemui semasa mengisi tatasusunan dengan data JSON, tatasusunan kosong akan dipaparkan dalam konsol.
P粉438918323
P粉438918323 2023-08-03 11:50:47
0
1
489
<p>Saya cuba mendapatkan beberapa data menggunakan API AlphaVantage dan saya mahu menyimpan semua dividen yang dibayar oleh stok tertentu dalam tatasusunan. Saya hanya cuba menyimpan dividen sekarang, tetapi pada masa hadapan saya ingin dapat mengaitkan dividen dengan tarikh tertentu. <br /><br />Fungsi untuk mendapatkan semula data:</p><p><strong></strong></p> <pre class="brush:php;toolbar:false;">async function fetchTimeSeriesDailyAdjusted (ticker) { //Fungsi Ambil untuk mendapatkan penutup harian dan dividen const apiTimeSeriesDailyAdjusted = `https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=${symbol}&apikey=${apiKey}`; //Lik API - kemas kini simbol cuba { respons const = tunggu fetch(apiTimeSeriesDailyAdjusted); data const = menunggu respons.json(); const historicalDiviend = []; //Susunan dividen for (let date in data['Time Series (Daily)']) { //This for sepatutnya membuat kod itu melalui semua JSON Dividen sejarah = kemasukan ['7 amaun dividen']; //Ini harus menyimpan dividen semasa gelung untuk "pergi" } console.log(historicalDividend); //Log konsol untuk melihat dividen return historicalDividend; //Nilai yang mesti dikembalikan oleh fungsi } tangkap (ralat) { console.error('Ralat mengambil apiTimeSeriesDailyAdjusted'); //Log ralat } }</pre> <p>Ini ialah fungsi yang saya buat, tetapi seperti yang saya lihat, dan mungkin anda juga boleh lihat, ia tidak berfungsi. </p>
P粉438918323
P粉438918323

membalas semua(1)
P粉739942405

Masalahnya ialah anda mengisytiharkan pembolehubah yang dipanggil historicalDividend, memulakannya kepada tatasusunan kosong, dan kemudian menetapkan semula keseluruhan pembolehubah kepada data siri masa pada setiap lelaran, yang bermaksud anda menulis ganti nilai setiap kali. Juga, entri tidak ditentukan, saya fikir anda mungkin mahu menggunakan tarikh.

Untuk menyelesaikan semua masalah ini, anda harus menggunakan kaedah map(), yang menerima tatasusunan, menggelungkannya dan mencipta tatasusunan baharu menggunakan nilai pulangan fungsi panggil balik.

Sebagai petua lain: Anda harus menyemak kod status HTTP respons untuk memastikan anda mendapat respons yang diharapkan.

Berikut ialah versi kod anda yang membetulkan kedua-dua isu:


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
  }
} 
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan