首页 > 解决方案 > 在js中对文本文件进行采样

问题描述

我想对从 api 获取的文本数据输出进行采样,因为数据很大,而且大小每次都是动态的。

让响应=等待获取(网址,选项);

让 testdata = 等待 response.text()

让 str = testdata.split('\n');

这里的测试数据量很大,所以我想做采样,然后进一步使用样本数据。请帮忙!!现在 str 存储了 10000000 行,我无法在 10000000 个数据点之外绘制图表,所以我需要在这里进行采样

这就是我发现这种方法很好

cat yourfile.txt | perl -ne 'print if (rand() < 0.000001)'

标签: javascriptfetchsampling

解决方案


这里阅读,您可以使用 awk 命令选择 'from line' -> 'to line'

awk 'NR >= 57890000 && NR <= 57890010' /path/to/file

或者

 awk 'NR < 57890000 { next } { print } NR == 57890010 { exit }' /path/to/file

这样,您可以将参数添加到获取 url 以检索您想要的内容,然后您必须将文本拆分为临时数组以添加带有偏移索引的大数组,即请求“来自行”号。

bigArray = [];
const from = 200000;
const to = 250000;
let response = await fetch('urll?from='+from+'&to='+to, options);
let testdata = await response.text();  
let lines = testdata.split('\n');
let idx = 0;
lines.forEach(line => {
  bigArray[from + idx] = line;
  idx++;
}
......

但无论您的线条大小如何,这都会占用大量内存,因此也许您可以删除一些索引,例如在“from line”之前 - 100000 和在“to line” + 100000 之后,并在您移动呈现的图形时重新加载数据价值观。


推荐阅读