4

私は次のことに固執しました。私は実行中のローカル http サービスを持っていないので、それ以外の方法でファイルの読み込みを処理したいと考えています。

最初に、いくつかの参考文献で提案されているように、次の関数を作成しました。

var fileArray = [];
function readSingleFile(evt) {
    //Retrieve the first (and only!) File from the FileList object
    var f = evt.target.files;
        window.array = []
        if (f) {
            var r = new FileReader();
                r.onload = function(e) { 
                var contents = e.target.result;
                window.array.push(contents);
                fileArray.push({name:f.name, contents: contents});
                }
                r.readAsText(f);
                console.log(fileArray);
                } else { 
                    alert("Failed to load file");
                }
            }
            document.getElementById('fileinput').addEventListener('change', readSingleFile, false);

次に、d3.csv 関数で fileArray を呼び出そうとします。しかし、これが私が立ち往生した場所です-コンソールログには空の配列が表示されます.

var dataset = []
                    d3.csv(fileArray, function(data) {
                    dataset = data.map(function(d) { return [ d["TEXT"], +d["HOURS"], +d["MONTH_DIGIT"] ]; });
                    console.log(dataset)
                });

.csv ファイルの構造は次のとおりです。

"TEXT","HOURS","MONTH_DIGIT"
"Adjustments work",849.45,"01"

d3.js で動作するファイルを正確に呼び出すにはどうすればよいですか?

4

2 に答える 2

2

「ファイルとそのコンテンツを取得して操作する」場合はd3.csv()、コールバックの後にメソッド内にファイルをロードし、コンテンツに加えたい変更を適用できます。

d3.csv('/path/to/myfile.csv, function(data) {
    // Modify the files data
    ...
    // Do something with d3.js
});
于 2013-08-12T14:36:13.953 に答える