仅加载CSV的N行

2q5ifsrm  于 2022-12-25  发布在  其他
关注(0)|答案(1)|浏览(155)

我有一个从CSV加载OHCLV数据的函数,此时该函数获取所有值,并返回它们,这是有效的
我想要的是只返回最后的N值。
例如,对于1000个值,我只需要最后100个值。
CSV显示如下:

date,open,high,low,close,volume
2013-03-25 16:00:00,76.31,77.5,76.31,77.5,117.65500211
2013-03-25 16:15:00,77.61,77.89,77.1,77.1,36.04786927
[...]
2022-12-22 17:15:00,16646.0,16649.0,16611.0,16623.0,37.57992574
2022-12-22 17:30:00,16626.0,16626.0,16585.0,16608.0,14.26339254

下面是函数

const getOHCLVData = async (path) => {
  const res  = await fetch(path);
  const resp = await res.text();
  const cdata = resp.split('\n').slice(1).map((row) => {   // slice(1) skip the header
    const [date, open, high, low, close, volume] = row.split(',');
    return {
      time: new Date(`${date}`).getTime() / 1000,
      open: open,
      high: high,
      low: low,
      close: close,
      volume: volume,
    };
  });
  return cdata;
};

// Call function
getOHCLVData(myfile.csv)

我应该试着给function添加一个新参数,并执行如下操作:cdata.lenght - NumberValue
有什么建议吗?

olhwl3o2

olhwl3o21#

这是对 * 兰迪·卡斯伯恩 * 评论的修正(新用户=低代表=不能评论)。
“将.slice(1)更改为.slice(-100)-负值从数组末尾拉入。- Randy Casburn
您可能希望向函数中添加默认变量。

. . . = async (path, nValues=-1)

把你的切片改成

. . . ('\n').slice(-nValues).map((row)

请注意,-1的缺省值与.slice(1)相同,因为我们使用-nValues
这应该可以添加您想要的功能,而不必强迫用户知道他们想要多少行。您不希望不必要地限制您的功能。

相关问题