【发布时间】:2021-07-13 23:36:42
【问题描述】:
我有一个 CSV 文件,其中包含 21k 条记录(1 字字母数字类型/行)。我需要读取这些记录并将它们发送到 JSON 键值对格式的 API,以进行一次只接受 500 个元素的处理。我有一个解决方案,但我想知道有没有更好或更有效的解决方案/算法?
算法:
- 将 CSV 加载到数组中
- 将此一维数组拆分为固定长度为 500 列(元素)的 N 数组
- 使用这 N 个 500 元素数组中的每一个,准备 JSON 有效负载并发送到 API。
代码:
var dataArray = [];
fs.readFile(inputPath, 'utf8', function (err, data) {
dataArray = data.split(/\r?\n/);
})
var temp = [];
for(i=0;i<dataArray.length;){
temp=[];
for(j=0;(j<500 && i<dataArray.length);j++){
temp.push(data[i]);
i++;
}
// make API call with current values of temp array
makeCallToAPI(temp);
}
【问题讨论】:
-
'Better' 是相对的,如果效率是目标,那么我建议您查看流式传输文件,而不是将整个文件加载到内存中。此外,鉴于您想分块处理文件,无论如何似乎更自然。
标签: javascript node.js arrays algorithm performance