在Javascript中导入多个CSV文件

时间:2012-10-24 16:53:55

标签: javascript csv d3.js

我需要将8-10个CSV文件导入到某些JS代码中。每个文件有大约8个不同的列。我想将这些信息存储在一个对象中(可能根据一个ID字段识别对象)。问题是,我能想到的最简单的方法是这样的:

var authorArr = [];
d3.csv("data/authors.csv", function(csv) {
    csv.forEach(function(d) {
    authorArr[d.record_id] = [];
    d.record_id = +d.record_id;
    d.name = d.name
    d.name_inverted = d.name_inverted;
    d.role = d.role;
    d.sequence = +d.sequence;
    d.is_person = d.is_person;

    authorArr[d.record_id] = d.name;
    authorArr[d.record_id] = d.role;
    etc...

当然这不是最快捷的方式......此外,还有相当多的重复记录_值,因此每次重复时,我都会以我可怕的方式丢失所有以前的数据。

我不确定这是否足够详细。如果没有,我很乐意添加更多。

1 个答案:

答案 0 :(得分:1)

您可以将临时变量用于新/当前记录。您的示例看起来也不像一个数组(有间隙)而是一个地图。以下是我加载数据的方法:

var authorMap = {}

var loadCSV = function(file){
    d3.csv(file, function(error, data) {
        data.forEach(function(d) {
            var a = authorMap[d.record_id] = {}
            a.record_id = d.record_id
            a.name      = d.name
            a.role      = d.role
        });
    });
}

loadCSV("file1.csv")
loadCSV("file2.csv")