我对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]
。但是,我不知道该怎么做。
答案 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]