在 D3.js 中提供了 d3.csv() 函数来读取 CSV 文件。函数 API 可参见: https://github.com/mbostock/d3/wiki/CSV git
d3.csv("table.csv",function(error,csvdata){ if(error){ console.log(error); } console.log(csvdata); });
变量中 csvdata 是保存了一个数组,数组中的每一个元素都一个对象,每一个对象里都有 age 、name、sex 三个成员变量github
for( var i=0; i<csvdata.length; i++ ){ var name = csvdata[i].name; var sex = csvdata[i].sex; var age = csvdata[i].age; console.log( "name: " + name + "\n" + "sex: " + sex + "\n" + "age: " + age ); }
d3.csv("table.csv",function(error,csvdata){ var str = d3.csv.format( csvdata ); console.log(str.length); console.log(str); });
利用format函数,str 中保存的就是转换后的字符串数组
与csv比较类似的还有TSV文件,它是以制表分割符来分隔的函数
读取方法以下:编码
d3.tsv("table.tsv",function(error,tsvdata){ console.log(tsvdata); var str = d3.tsv.format( tsvdata ); console.log(str.length); console.log(str); });
其实,在D3中读取csv和TSV都是经过d3调用dsv函数来实现的spa
例如读取以分号分割的文件,代码以下(注意:dsv可做函数):code
var dsv = d3.dsv(";", "text/plain"); dsv("table.dsv",function(error,dsvdata){ if(error) console.log(error); console.log(dsvdata); });
在 d3.dsv 的第二的参数中,其实能够添加编码的,形如:orm
var csv = d3.dsv(",", "text/csv;charset=gb2312"); var tsv = d3.dsv(" ", "text/tab-separated-values;charset=gb2312"); csv("xxx.csv",function(error,csvdata){ } tsv("xxx.tsv",function(error,tsvdata){ }
从而能够避免读取文件时,出现乱码对象