Javascript 按csv文件的顺序读取列
从csv文件加载数据时,是否可以获取列的顺序 例如,加载csv文件的典型方法是调用d3.csv函数:Javascript 按csv文件的顺序读取列,javascript,csv,d3.js,Javascript,Csv,D3.js,从csv文件加载数据时,是否可以获取列的顺序 例如,加载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文件中的顺序对列进行排
d3.csv("data.csv", function(error, data) {
var ageNames = d3.keys(data[0]).filter(function(key) { return key !== "State"; });
通常,列存储为对象的属性,因此无法再检索顺序。另外,d3.keys()返回一个顺序未定义的数组
我这样问是因为我想按csv文件中的顺序对列进行排序。任何帮助都将不胜感激。您不需要使用列的名称来访问数据,您可以使用键的索引。索引由文件中的顺序决定,因此正是您要查找的内容 要获取对象的键,请使用
object.keys()
:
从关系视图来看,d3.js读取文件的方式具有相反的属性,这似乎令人惊讶: 关系视图:
- 行没有任何保证的顺序
- 列具有定义良好的顺序,可以通过参考它们的位置来寻址
- 行具有定义良好的顺序,可以通过引用行编号来寻址。(它们存储在一个数组中)
- 列最终成为对象中的一组属性,因此它们没有定义良好的顺序
另见。描述的一个例外是:当列名是唯一的数字时,Chrome浏览器会根据它们的数字顺序而不是列顺序对它们进行排序。只需使用索引访问数据,例如,
数据[0][0]
将是第一行第一列的数据。非常感谢!你可以回答我的意见,我很乐意接受。。我刚刚尝试了你的答案,但它不起作用:(.我使用了以下脚本:。数据是一个对象数组。因此数据[0][0]未定义。请澄清一下。对不起,我误解了你的意图。请参阅我的编辑。拉尔斯:谢谢你的快速回复,但API仍然说:数组的顺序未定义。我假设函数d3.keys()典型的“for..in..”循环不保证任何顺序。很抱歉坚持,但是这个主题已经困扰了我很长时间,我发布了几个相关的问题。我错了什么?在实践中,这应该让您获得正确的顺序,除非您修改数据(即删除或添加键)动态。这对你不起作用吗?我在几个例子中看到了关于正确顺序的假设。不,我没有经历过这样的情况。但是,读到关于不保证顺序的句子会让你怀疑这种方法是正确的。让我在回答中表达我的理解。如果你同意,我就不麻烦了你还需要这个:)
var keys = Object.keys(data[0]);
data[0][keys[0]]; // datum in the first row, first column