javascript - 在js中对文本文件进行采样
问题描述
我想对从 api 获取的文本数据输出进行采样,因为数据很大,而且大小每次都是动态的。
让响应=等待获取(网址,选项);
让 testdata = 等待 response.text()
让 str = testdata.split('\n');
这里的测试数据量很大,所以我想做采样,然后进一步使用样本数据。请帮忙!!现在 str 存储了 10000000 行,我无法在 10000000 个数据点之外绘制图表,所以我需要在这里进行采样
这就是我发现这种方法很好
cat yourfile.txt | perl -ne 'print if (rand() < 0.000001)'
解决方案
从这里阅读,您可以使用 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 之后,并在您移动呈现的图形时重新加载数据价值观。
推荐阅读
- java - 连接到 MongoDB 时出错“过早到达流的末尾”
- python - 如何将数据平滑成阶梯曲线?
- java - 考虑在你的配置中定义一个 'com.test.simpletest.mapper.PersonMapper' 类型的 bean
- c++ - 我如何获得函数的值?
- c# - 如何在 C# 中将多行文本从 access 数据库显示到 DataGridView
- javascript - 禁用除母亲节以外的所有星期日
- spring - Spring JPA 存储库多对多映射在添加记录时创建重复项
- javascript - 为什么控制台记录html没有行结束
- python - Python Pandas 中的嵌套循环 - 将子循环结果组合成连接的 df,并在文件名中使用组名保存
- docker - Docker Swarm 中的优雅容器关闭超时