我有两个版本的水平条形图,堆叠和成对(又称为分组)。每个代码都填充到各自的功能中。
请参阅第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数据,您可以将push到result
数组中。
最后,将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/