我有两个版本的水平条形图,堆叠和成对(又称为分组)。每个代码都填充到各自的功能中。

请参阅第35-43行(var stacked = function (){ ... })和第117-121行(var paired = function (){ ... })以查看当前如何解析CSV:http://tributary.io/inlet/8832116

取消注释第197行及下面的注释,以查看呈现的堆叠版本。为此,我手动更改了数据,并不理想。

目标:我想解析csv文件并以编程方式删除列,而不是手动将其删除并保存2个单独的csv文件。

我需要解析csv并使用本机d3或javascript代码将其删除,但是如何?

以代码显示。

我有:

Category,Total,Under $1000, ...
Music,14744,1434, ...
Art,12796,1216, ...


我需要全部删除:

Category,Under $1000, ...
Music,1434, ...
Art,1216, ...

最佳答案

如果内存中有CSV字符串(可变字符串),请在\n上使用split获取行,循环遍历每行并在,上拆分。这将为您提供给定行的列值数组。

Splice移出不需要的列,然后将行与,连在一起-这将使您返回一行CSV数据,您可以将pushresult数组中。

最后,将result数组与\n结合在一起,就可以了-一个包含CSV数据的新字符串,其中没有不需要的列。

请注意,这将无法正确处理CSV数据附带的引号/其他陷阱,但是如果您的数据不包含任何明文内容,则不会被处理。



使用map的示例:

// raw CSV data from somewhere
var csv =
'Category,Total,Under $1000\n' +
'Music,14744,1434,3450\n' +
'Art,12796,1216,7748\n';

// split on newlines, map over each line
var newCsv = csv.split('\n').map(function(line) {
    var columns = line.split(','); // get the columns
    columns.splice(1, 1); // remove total column
    return columns;
}).join('\n'); // join on newlines

console.log(newCsv);


http://jsfiddle.net/PZ9vM/

07-24 09:39
查看更多