node.js - 如何使用nodejs删除重复的csv文件行
问题描述
我正在尝试寻找提供此功能的任何简单方法或任何节点包。
我的 csv 数据如下:
"date","time1","height1","time2","height2","time3","height3","time4","height4"
"30 Ogos 2021","05:08","175","11:30","93","17:00","148","23:04","88"
"31 Ogos 2021","06:00","160","12:39","104","18:40","132",,
"30 Ogos 2021","05:08","175","11:30","93","17:00","148","23:04","88"
"31 Ogos 2021","06:00","160","12:39","104","18:40","132",,
不同的行将具有动态的列数。
解决方案
这个解决方案效率低下,我相信它是 O(n^2),但如果我们假设您的 CSV 在 javascript 中表示为字符串的二维数组(即string[][]
以打字稿表示法),它会起作用。
const table = loadCsv(...); // this line is pseudocode
/**
* Check if two arrays are the same
*/
function rowCompare(rowA, rowB) {
if (rowA.length !== rowB.length) return false;
for (let i = 0; i < rowA.length; i++) {
if (rowA[i] !== rowB[i]) return false;
}
return true;
}
const dedupedTable = table.filter((row, ind, arr) => {
return ind === arr.findIndex(r => rowCompare(row, r))
});
该dedupedTable
变量现在应该包含您的表,并删除了所有重复的行。
推荐阅读
- php - 如何编写在自身内部重复的代码?
- flutter - 如何在 Flutter 中更改具有多个容器的连续容器的颜色
- reactjs - 为什么即使草稿已经更改,我的 immer reducer 也没有返回新值?
- asp.net-mvc - 复制日期值
- nginx - 生产中出现 net::ERR_CONNECTION_REFUSED 错误
- vue.js - Vuejs 3 - vitejs 中 require.context 的替代方案是什么
- function - Eventhub 触发的函数
- html - 如何在 HTML 中对齐多行选择?
- c# - 用户在游戏中保存材料
- javascript - 无法在上传之前为图像大小验证及其不同类型格式添加警报通知我们如何实现