【问题标题】:Not able to save data as arrays to then save as CSV无法将数据另存为数组然后另存为 CSV
【发布时间】:2021-08-09 19:19:17
【问题描述】:

我正在尝试使用这行代码 await yahooStockAPI.getHistoricalPrices(startDate, endDate, symbol, '1d'); 保存从 API 收集的股票数据,并将其保存为名为 newData 的数组,但是,我一直得到一个空数组。如果我这样做 console.log(newData); 我可以看到类似这样的输出(对于我在代码中定义的每个符号)...

{
  error: false,
  currency: 'USD',
  response: [
    {
      date: 1627047000,
      open: 147.5500030517578,
      high: 148.72000122070312,
      low: 146.9199981689453,
      close: 148.55999755859375,
      volume: 71447400,
      adjclose: 148.33775329589844
    },
    {
      date: 1626960600,
      open: 145.94000244140625,
      high: 148.1999969482422,
      low: 145.80999755859375,
      close: 146.8000030517578,
      volume: 77338200,
      adjclose: 146.58038330078125
    },...

... 但是,保存在我设置的目录中的 CSV 文件是空的,我收到错误 The input to objects-to-csv must be an array of objects 。我想将上面的输出作为对象数组newData 然后使用 NPM 包将其转换为 CSV 文件。本质上,数组是这样的(与const symbol 的顺序相同:

const newData = [
    {date: '...', open: open price for apple, high: highest price for amazon, low:..., etc},
    {date: '...', open: open price for amazon, high: highest price for google, low:..., etc},
];

我不介意数组中的每个对象是否没有每只股票的股票代码,因为我有订购的const symbol

这是代码:

const yahooStockAPI  = require('yahoo-stock-api');
const ObjectsToCsv = require('objects-to-csv');

const symbol = ['AAPL','AMZN','GOOGL']
symbol.forEach(main);

let newData = []; 

async function main(symbol) {
  const startDate = new Date('01/01/2018');
  const endDate = new Date('08/01/2021');
  newData = await yahooStockAPI.getHistoricalPrices(startDate, endDate, symbol, '1d');

  //console.log(newData);

  (async () => {
    const csv = new ObjectsToCsv(newData);
    await csv.toDisk('C:/Users/Rafael Oliveira/Desktop/teste/test2.csv');
  })();

};
main();

提前谢谢你

【问题讨论】:

    标签: javascript arrays csv


    【解决方案1】:

    ObjectsToCsv 包期望将一组对象传递给它,但是从您共享的记录数据来看,newData 是一个对象。您正在寻找的确切数据可以通过newData.response 访问。所以下面的代码行应该可以工作:

    const csv = new ObjectsToCsv(newData.response);

    【讨论】:

    • 非常感谢!我现在能够获取“AAPL”的数据,但我似乎没有在 CSV 文件中找到其余的数据(亚马逊和谷歌)。我已经在做symbol.forEach(main),所以它也应该将数据保存在同一个 CSV 文件中,对吗?
    • @Rafael 这是一个不同的问题——您可能正在覆盖您的文件。我可以建议您打开一个新问题,因为它不是原来的问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2023-03-07
    • 2022-01-09
    • 2023-03-10
    • 1970-01-01
    相关资源
    最近更新 更多