从本地csv文件-javascript中删除基于ID的行



我不是一个经验丰富的程序员,所以如果问题太简单,请原谅我。我有一个有很多行的csv,其中一列是"id"。如何根据id只删除一行(即代码应该搜索id并删除该行(?

到目前为止,我收到了以下信息(没有太大帮助,因为有一天我可能需要删除id 5,另一天我需要删除id 2…(非常感谢!

var fs = require('fs')
fs.readFile(filename, 'utf8', function(err, data)
{
if (err)
{
// check and handle err
}
var linesExceptFirst = data.split('n').slice(1).join('n');
fs.writeFile(filename, linesExceptFirst);
});

PS:它必须是javascript,因为代码正在nodejs服务器上运行

您需要解析CSV,这与Array.prototype.map((很简单

然后,您需要使用Array.prototype.filter((来查找要查找的列值。

这只是几行代码,你已经做好了准备:

var fs = require('fs')
// Set this up someplace 
var idToSearchFor = 2;
// read the file
fs.readFile('csv.csv', 'utf8', function(err, data)
{
if (err)
{
// check and handle err
}
// Get an array of comma separated lines`
let linesExceptFirst = data.split('n').slice(1);
// Turn that into a data structure we can parse (array of arrays)
let linesArr = linesExceptFirst.map(line=>line.split(','));
// Use filter to find the matching ID then return only those that don't matching
// deleting the found match
// Join then into a string with new lines
let output = linesArr.filter(line=>parseInt(line[0]) !== idToSearchFor).join("n");
// Write out new file
fs.writeFileSync('new.csv', output);
});

请注意,我删除了对.join()的调用,这样我们就可以对从对.split()的调用创建的数组进行操作。其余部分为评论。

最后,可以在这里找到一个工作示例:https://repl.it/@randycasburn/分析CSV并逐列查找值ID

编辑:代码现在将返回所有行,除了找到的id。因此,本质上是删除该行。(根据OP的评论请求(。

编辑2:现在根据请求输出到新的CSV文件。

最新更新