2012-10-24 104 views
1

我需要將8-10個CSV文件導入到一些JS代碼中。每個文件都有大約8個不同的列。我想將這些信息存儲在一個對象中(可能根據其中一個ID字段標識對象)。問題是,我能想到看起來像最簡單的方法:用Javascript導入多個CSV文件

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... 

當然這不可能是最快的辦法......另外,還有相當多的重複RECORD_ID值的爲好,所以每次有是一個重複,我會用我可怕的方法失去所有以前的數據。

我不確定這是否足夠詳細。如果不是,我會很高興增加更多。

回答

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") 
+0

我仍然是相當新的程序員,所以我不太瞭解地圖。我會鼓搗你的方法,看看我的想法。有什麼方法可以自動化標識符嗎? (例如:而不是要求d.name並將其命名爲d.name,我可以用列名稱來命名每列) 非常感謝您的幫助! – 1080p

+0

我想你首先需要了解更多關於[Javascript](http://bonsaiden.github.com/JavaScript-Garden/)。關於[數組vs對象](http://stackoverflow.com/questions/688097/objects-vs-arrays-in-javascript-for-key-value-pairs)等等東西。 :-) – Juve