2013-08-17 94 views
0

首先是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

所以,你想要將return_data中的JSON轉換爲單獨的數組以便在數據中使用? –

+0

@MatthewRiches也許這不是必要的。我只想用數據元素替換return_data元素,考慮到return_data的長度是可變的。 – Tahtakafa

+0

我想你可以很容易地使用循環將一個數組轉換爲另一個數組。你嘗試過嗎? –

回答

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 
     ); 
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

所以,我通過API看了一下,用你的小提琴演奏了一下。 這是非常直接的搜索&取代通過數據和從提供的數組更新值。

在這裏看到: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); 
    } 
} 

TheChartTheDataTheOptions只是全局變量,從你的小提琴chartdataoptions瓦爾。

我也很確定它在循環中效率不是很高,但是您可以根據自己的意願優化基本思路。