使用JavaScript Object值,如数组

时间:2013-04-26 15:29:19

标签: javascript google-visualization

我对JavaScript世界还很陌生,我不完全确定如何使用对象,就好像它是一个数组(通过索引从Object中访问信息,而不是特定的名称)。

我想基于它的索引检索对象内容的值,类似于数组的索引。这在我的代码中说明:

function pieChart(daten, width, height, div)
{
    var data = new google.visualization.DataTable();

    data.addColumn('string');
    data.addColumn('number');
    //returns: [Object, Object, Object, Object]
    console.log(daten);

    for(item in daten)
    {    
         console.log(daten[item]);
         //The following 4 lines are the output of the console log
         //Object {crimes: "300", location: "Cardiff"}
         //Object {crimes: "900", location: "London"}
         //Object {crimes: "500", location: "Manchester"}
         //Object {crimes: "400", location: "Dublin"}             

         //here in lies the problem...
         data.addRow([daten[item].location, parseInt(daten[item].crimes)]);
         //the output would be: ["Dublin", 400] etc...
    }

    var chart = new google.visualization.pieChart(document.getElementById(div));
    chart.draw(data, {"width": width, "height": height});
}

基本上,我希望能够data.addRow([daten[item][0], daten[item[1]]),因为我不会在运行时知道位置和犯罪。

编辑:

我应该注意我使用Google Visualisations API(如上图所示),它将数组作为data.addRow()的值。因此,可能的解决方案是将对象转换为具有上述指定要求的数组,以使输出为:["Dublin", 400]["London", 900]["Manchester", 500]["Cardiff", 300]。但是,我不知道该怎么做。

3 个答案:

答案 0 :(得分:1)

您不能以这种方式访问​​对象属性。你知道知道索引的名称是什么;这基本上就是他们的工作方式。我想你可以通过迭代对象的属性来做你想做的事。这样您就不需要事先知道属性的名称是什么:

var rowData = [];

for(var property in daten[item]) {
    var value = daten[item][property];

    //Since you want to convert some strings to integers, this
    //regex checks to see if the value is an integer or not
    if(/^-?\d+$/.test(value)) {
        rowData.push(parseInt(value, 10))   
    } else {
        rowData.push(value);
    }
}

data.addRow(rowData);

注意:请注意,这不会为daten[item]中的密钥提供可预测的订单。

答案 1 :(得分:0)

您应该通过键访问对象的值:

data.addRow(item.location, item.crimes);

答案 2 :(得分:0)

您可以通过daten[item][location]

这种方式访问​​该值