1

8〜10個のCSVファイルをいくつかのJSコードにインポートする必要があります。各ファイルには約8つの異なる列があります。この情報をオブジェクトに保存したいと思います(IDフィールドの1つに基づいてオブジェクトを識別する可能性があります)。問題は、私が考えることができる最も簡単な方法は次のように見えることです。

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値がかなり重複しているため、繰り返しが発生するたびに、恐ろしいアプローチで以前のデータがすべて失われます。

それで十分かどうかはわかりません。そうでない場合は、さらに追加していただければ幸いです。

4

1 に答える 1

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")
于 2012-10-24T21:37:05.953 に答える