如何在数组中指定元素?

时间:2016-11-14 08:33:25

标签: javascript d3.js

我一直在尝试在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
      };

1 个答案:

答案 0 :(得分:0)

此问题要么与D3有关,要么更可能是JSON问题。

您可以使用jsonlint.com等工具更清晰地查看JSON,从而帮助自己。为此:

  1. 将此行添加到您的代码中

    的console.log(JSON.stringify(my_json_variable))

  2. 在浏览器上按F12并选择控制台。

  3. 运行代码
  4. 复制&amp;将JSON字符串从控制台粘贴到json viewer并查看。
  5. 很多时候代码中的错误纯粹是程序员假设错误。以这种方式可视化JSON可以帮助预留假设。

相关问题