从csv文件加载数据时,是否可以获取列的顺序?
E.g。加载csv文件的典型方法是调用d3.csv函数:
d3.csv("data.csv", function(error, data) {
var ageNames = d3.keys(data[0]).filter(function(key) { return key !== "State"; });
通常,列存储为对象的属性,因此无法再检索订单。此外,d3.keys()返回一个未定义顺序的数组。
我问这个是因为我想按csv文件中的顺序对列进行排序。任何帮助将不胜感激。
答案 0 :(得分:2)
您不需要使用列的名称来访问数据,您可以使用键的索引。索引由文件中的顺序决定,因此正是您要查找的内容。
要获取对象的键,请使用Object.keys()
:
var keys = Object.keys(data[0]);
data[0][keys[0]]; // datum in the first row, first column
答案 1 :(得分:0)
从关系视图来看,d3.js从文件中读取的方式具有相反的特性似乎令人惊讶:
关系视图:
(csv文件的)d3.js视图:
如果要像在csv文件中那样访问列的顺序,可以安全地假设“for ... in ..”循环遍历属性或 d3。 keys()以给定的顺序返回列。 如果添加或删除列,则可以销毁此订单。这对于大多数实际应用并非如此。
另见https://javascriptweblog.wordpress.com/2011/01/04/exploring-javascript-for-in-loops/。所描述的一个例外情况是:当列名称是唯一的数字时,Chrome浏览器会根据订单数量顺序对其进行排序。