首先here is a fiddle。我想动态更改变量data
的参数。如果查看Firebug控制台,可以查看数据数组对象。我查了很多,但我无法弄明白data
。
简而言之,我想用return_data
元素重新生成数据数组对象。 return_data
对象的元素是动态的。在fiddle中它有3个元素,但它可能不同于3.我怎么能动态地改变它?
提前致谢。
var return_data = [{"name":"mrzurafa","count":315,"pop":5,"impact":7.37},{"name":"mutcato","count":20,"pop":5,"impact":56},{"name":"s0lukciyerli","count":3488,"pop":5,"impact":25.65}];
var data = google.visualization.arrayToDataTable([
['name','impact','pop','temp','count'],
['beyinsiz',80.66,1.67,2,33739900],
['mutcato',79.84,1.36,4,81902307],
['s0lukciyerli',78.6,1.84,8,5523095],
['herbkubilenadam',81.55,2.96,10,748560000],
['mrzurafa',88.09,2.05,40,307007000]
]);
答案 0 :(得分:1)
你可以尝试这个,这会返回一个新的列表,其结构与return_data完全相同:
var return_data = [{"name":"mrzurafa","count":315,"pop":5,"impact":7.37},{"name":"mutcato","count":20,"pop":5,"impact":56},{"name":"s0lukciyerli","count":3488,"pop":5,"impact":25.65}];
var data = ([
['name','impact','pop','temp','count'],
['beyinsiz',80.66,1.67,2,33739900],
['mutcato',79.84,1.36,4,81902307],
['s0lukciyerli',78.6,1.84,8,5523095],
['herbkubilenadam',81.55,2.96,10,748560000],
['mrzurafa',88.09,2.05,40,307007000]
]);
//prepare object
var item = {}
for (j=0;j<data[0].length;j++) {
item[data[0][j]] = "";
}
//prepare list of objecs
var objs = []
for (i=1;i< data.length;i++) {
item['name'] = data[i][0];
item['impact']=data[i][1];
item['pop']=data[i][2];
item['temp']=data[i][3];
item['count']=data[i][4];
objs.push(item)
}
console.log(objs)
希望它有所帮助。
答案 1 :(得分:1)
所以,我查看了API,并用你的小提琴玩了一下。 这是非常简单的搜索&amp;替换以查看数据并更新提供的数组中的值。
见这里:http://jsfiddle.net/2Za7T/
function updateData(data, keycolumn) {
var i, j;
// mapping
var map = {};
var keyColumnIndex = -1;
for (i = 0; i < TheData.getNumberOfColumns(); i++) {
map[TheData.getColumnLabel(i)] = i;
if (TheData.getColumnLabel(i) == keycolumn)
keyColumnIndex = i;
}
// updating
if (keyColumnIndex >= 0) {
for (i = 0; i < data.length; i++) {
var record = data[i];
if (record[keycolumn]) {
var matchedRows = TheData.getFilteredRows([{column: keyColumnIndex, value: record[keycolumn]}]);
for (j = 0; j < matchedRows.length; j++) {
for (var key in record)
if (key != keycolumn) {
TheData.setValue(matchedRows[j], map[key], record[key]);
}
}
}
}
TheChart.draw(TheData, TheOptions);
}
}
TheChart
,TheData
和TheOptions
只是来自您小提琴的chart
,data
和options
变种的全球变种。
我也很确定它在循环方面效率不高,但你可以根据自己的意愿优化基本思路。
答案 2 :(得分:0)
我已经解决了here中的问题,感谢所有帮助。
jsonObj = return_data;
var Obje = [];
Obje[0]=['name','impact','pop','temp','count'];
for(var i=0; i<jsonObj.length; i++)
{
Obje[i+1]=[jsonObj[i]['name'],jsonObj[i]['impact'],jsonObj[i]['pop'],10*i,jsonObj[i]['count']];
}
console.log(Obje);
// Create and populate the data table.
var data = google.visualization.arrayToDataTable(
Obje
);