javascriptでCSVファイルを取り込む

.jsファイルのディレクトリを取得

simulation.jsを配置しているディレクトリを取得します。

function getOwnDir(){
	var root;
    var scripts = document.getElementsByTagName("script");
	
    var i = scripts.length;
    //alert(i);
	while (i--) {
        var match = scripts[i].src.match(/(^|.*\/)simulation.js.*$/);
		if (match) {
            root = match[1];
            break;
        }
    }
	return root;
}

CSVファイル読み込み

function getOwnDir と同じディレクトリに配置したCSVファイルのURLを引数filenameに渡して、CSVファイルをテキストでリターンします。

function getCSV(filename) {
 
    // CSVファイルを文字列として取得
    var srt = new XMLHttpRequest();
    srt.open("GET", filename, false);
    try {
      srt.send(null);
    } catch (err) {
      console.log(err)
    }
 
	return srt.responseText 
  }

CSVをjsonに変換する関数

function csvToJson(csvStr, userOptions) {
    if (typeof csvStr !== 'string') return null;
 
    var options = { header : 0, columnName : [], ignoreBlankLine : true };
 
    if (userOptions) {
        if (userOptions.header) options.header = userOptions.header;
        if (userOptions.columnName) options.columnName = userOptions.columnName;
    }
 
    var rows = csvStr.split('\n');
    var json = [], line = [], row = '', data = {};
    var i, len, j, len2;
 
    for (i = 0, len = rows.length; i < len; i++) {
        if ((i + 1) <= options.header) continue;
        if (options.ignoreBlankLine && rows[i] === '') continue;
 
        line = rows[i].split(',');
 
        if (options.columnName.length > 0) {
            data = {};
            for (j = 0, len2 = options.columnName.length; j < len2; j++) {
                if (typeof line[j] !== 'undefined') {
                    row = line[j];
                    row = row.replace(/^"(.+)?"$/, '$1');
                } else {
                    row = null;
                }
 
                data[options.columnName[j]] = row;
            }
            json.push(data);
        } else {
            json.push(line);
        }
    }
 
    return json;
}

上記の関数を使って以下のように処理

var fileURL =  getOwnDir() + "result_table.csv";
var csvStr = getCSV(fileURL);
var jsonObj = csvToJson(csvStr,{ header : 0, columnName : ['id', 'yosan', 'hojokin'] })
console.log(jsonObj);