Rumah  >  Soal Jawab  >  teks badan

Apabila ketidakkonsistenan ditemui semasa mengisi tatasusunan dengan data JSON, tatasusunan kosong akan dipaparkan dalam konsol.

<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粉438918323P粉438918323465 hari yang lalu480

membalas semua(1)saya akan balas

  • P粉739942405

    P粉7399424052023-08-04 00:56:41

    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
      }
    } 

    balas
    0
  • Batalbalas