我有包含4个字段的CSV文件:
地址、经度、纬度、几何学 1,2,3,4 5,6,7,8
我想创建一个列表,只选择“几何”字段。
这能给我们完整的名单吗?
d3.csv("file.csv", function(collection) {
..
var mydata=collection.geometry;
..
});发布于 2014-01-31 06:21:19
要从对象列表中提取单个属性,可以使用以下map方法:
var temp = "Address,longitude,latitude,geometry\n"+
"1,2,3,4\n5,6,7,8\n2,3,4,5\n6,7,8,9";
var t = d3.csv.parse(temp);
console.log(t.map(function(d){return d.geometry;}));演示Fiddle
发布于 2014-01-31 03:21:53
如果几何学是csv文件中的列,则不能直接从d3.csv函数的结果中选择它。由d3表读取函数创建的数据对象是表示csv文件的每一行的对象数组。
所以对于csv文件地址,经度,纬度,几何123主St,90,50,几何字符串A 22百老汇,92,51,几何字符串B
输出是
[
{ "Address":"123 Main St",
"longitude":"90",
"latitude":"50",
"geometry":"geometry string A"},
{ "Address":"22 Broadway",
"longitude":"92",
"latitude":"51",
"geometry":"geometry string B"}
]要获得一个只包含几何字符串的数组,可以使用阵列映射函数。
d3.csv("file.csv", function(collection) {
...
var mydata=collection.map( function(d){return d.geometry;} );
...
});现在,mydata是一个字符串数组,仅表示csv文件的“几何图形”列。
我刚看到@arete的回答。这与读取文件的方式基本相同,除非映射是在读取文件的同时完成的,并且只有这一列被传递给回调函数。(尽管注意,它仍然作为对象数组返回,而不是字符串数组。)
如果您没有使用文件中的任何其他数据,那么对于大型数据集来说,这可能会稍微快一些。但是,有了这个版本,如果程序的其他部分需要完整的数据收集,您仍然可以访问它。
https://stackoverflow.com/questions/21471019
复制相似问题