我一直在尝试在other stack overflow之后读取d3库的多个csv文件。 所有csv数据都将存储在数组结果中。但是通过chrome开发人员工具检查结果,数据被存储到结果奇怪的方式,如下图所示。 我可以看到数据存储到结果数组中,但我无法指定存储在数组中的元素。 谁能告诉我如何在这个数组中指定元素?或告诉我如何避免以这种方式将数据存储到数组?
我可以看到数据存储在数组中,但如果我尝试从数组中获取元素,则返回“undefined”:
function multicsv(files){
var results=[];
var categories=[];
//var category=[];
var filesLength = (files || []).length;
//console.log(filesLength);
var count=0;
var counter=function(){
return count++
}
for (var i=0 ;i<filesLength;i++){
d3.csv(files[i], function(data){
ix=counter();
data,category=get_category(data,ix);
//console.log(data);
arr=fitstruct(category,data);
//console.log(arr);
//results.push(arr);
results[ix]=arr
//categories.push(category)
categories[ix]=category
});
}
console.log(results);
console.log(results[0]);
};
function get_category(data,ix){
var category=[]
data.forEach(function(d){
if(d.Subcategory=="General"){
d.category=d[""]
category.push(d[""]);
}else if(d.Subcategory!="General"){
d.category=d.Subcategory;
category.push(d.Subcategory);
};
d.electric=+d["Electricity [kWh]"];
d.version=ix;
})
return data,category
};
function fitstruct(list,data){
var electricity=[];
var total=0
for (i=0;i<list.length;i++){
//electricity.push(category[i],data[i]["electric"])
electricity[list[i]]=data[i]["electric"]/1000000
total+=data[i]["electric"]
}
electricity["version"]=data[0]["version"];
electricity["total"]=total/1000000
return electricity
};
答案 0 :(得分:0)
此问题要么与D3有关,要么更可能是JSON问题。
您可以使用jsonlint.com等工具更清晰地查看JSON,从而帮助自己。为此:
将此行添加到您的代码中
的console.log(JSON.stringify(my_json_variable))
在浏览器上按F12并选择控制台。
很多时候代码中的错误纯粹是程序员假设错误。以这种方式可视化JSON可以帮助预留假设。