【问题标题】:Reading CSV in D3 and converting it to array of arrays在 D3 中读取 CSV 并将其转换为数组数组
【发布时间】:2017-03-23 13:17:10
【问题描述】:

我将以下小数据集硬编码到我的代码中的一个变量中:

var dataset = [['CENTRAL', 44, 552, 18565], 
                ['NORTHERN', 42, 945, 20092], 
                ['SOUTHERN', 96, 795, 30095], 
                ['PARK', 1, 640, 9341], 
                ['MISSION', 66, 1198, 18542], 
                ['TENDERLOIN', 23, 113, 10735], 
                ['RICHMOND', 9, 561, 9082], 
                ['TARAVAL', 81, 789, 11966], 
                ['INGLESIDE', 5, 1368, 13414], 
                ['BAYVIEW', 7, 985, 14711]];

现在,这个数据集直接取自一个 .csv 文件,如下所示:

District,Prostitution,VehicleTheft,Totalcrimecount
CENTRAL,44,552,18565
NORTHERN,42,945,20092
SOUTHERN,96,795,30095
PARK,1,640,9341
MISSION,66,1198,18542
TENDERLOIN,23,113,10735
RICHMOND,9,561,9082
TARAVAL,81,789,11966
INGLESIDE,5,1368,13414
BAYVIEW,7,985,14711

但是,我显然希望能够只读取文件,我曾尝试使用此文件:

var dataset_csv = d3.csv("datafile.csv", function(d){
    console.log(dataset_csv = d)
}); 

这给了我一个看起来像这样的对象数组:

[Object, Object, Object, Object, Object, Object, Object, Object, Object, Object]

District: "CENTRAL"
Prostitution: "44"
Totalcrimecount: "18565"
VehicleTheft: "552"

我的问题是,这可能是微不足道的,我如何将这些对象转换为像我的初始数据集一样的数组数据结构?我已经和它斗争了一段时间了。任何提示都非常感谢。

【问题讨论】:

    标签: javascript arrays csv d3.js


    【解决方案1】:

    使用Array#map 迭代每个对象,使用Object.keys 仅捕获键值。

    var dataset_csv = [{District: "CENTRAL", Prostitution: "44", Totalcrimecount: "18565", VehicleTheft: "552"}, {District: "WEST", Prostitution: "22", Totalcrimecount: "4324", VehicleTheft: "53"}, {District: "EAST", Prostitution: "11", Totalcrimecount: "23434" , VehicleTheft: "76"}],
        datasetArr = dataset_csv.map(v => Object.keys(v).map(c => Number(v[c]) ? Number(v[c]) : v[c]));
        
        console.log(datasetArr);

    【讨论】:

    • 谢谢,但我想知道如何将原始数字解析为整数,而不是字符串,就像上面的代码一样?您可以将+ 放在v[c] 前面以解析所有值,但是“CENTRAL”也尝试成为一个数字,这显然不起作用。
    • @Khaine775 已修复。
    • 这是一个非常优雅的解决方案,感谢您的启发!
    猜你喜欢
    • 2016-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    • 2021-11-09
    • 2016-11-25
    • 2012-09-19
    • 1970-01-01
    相关资源
    最近更新 更多