2011-08-22 145 views
0

我已經在這個數據從使用jquery的方法的getJSON一個REST方法到來。轉換一個javascript字符串轉換成2維陣列

"[Date.UTC(2010,0,0,0,0,0,0), 157],[Date.UTC(2010,0,0,0,0,420,1), 157],[Date.UTC(2010,0,0,0,0,420,2), 282],[Date.UTC(2010,0,0,0,0,600,3), 282],[Date.UTC(2010,0,0,0,0,600,4), 125],[Date.UTC(2010,0,0,0,0,900,5), 125],[Date.UTC(2010,0,0,0,0,900,6), 282],[Date.UTC(2010,0,0,0,0,2100,7), 282],[Date.UTC(2010,0,0,0,0,2100,8), 125],[Date.UTC(2010,0,0,0,0,2400,9), 125],[Date.UTC(2010,0,0,0,0,2400,10), 295],[Date.UTC(2010,0,0,0,0,3600,11), 295],[Date.UTC(2010,0,0,0,0,3600,12), 125],[Date.UTC(2010,0,0,0,0,3900,13), 125],[Date.UTC(2010,0,0,0,0,3900,14), 288],[Date.UTC(2010,0,0,0,0,5100,15), 288],[Date.UTC(2010,0,0,0,0,5100,16), 125],[Date.UTC(2010,0,0,0,0,5400,17), 125]" 

它作爲字符串返回。我需要將它解析爲一個二維數組。數組中的每個項目都應該有一個日期和一個值。

我也有過REST方法完全控制,這樣我就可以改變數據的方式回報。我有興趣儘可能快地完成這項工作。

下面就是我們現在,我認爲可以改進做:

var jqxhr = $.getJSON(getDataURL, function(dataResult) { 
     var result = dataResult; 

     result =result.replace(/\]\,\[/g, ']:['); 
     result = result.replace(/\)\,/g, ');'); 

     var tempArray = result.split(':'); 

     var myarray = new Array(); 
     myarray[0] = new Array(2); // Make the first element an array of two elements 
     for(i = 0; i < tempArray.length; i ++) 
     { 
      myarray[i] = tempArray[i].split(';'); 
      myarray[i][1] = myarray[i][1].replace(/\"/g,''); 
      myarray[i][1] = myarray[i][1].replace(/\]/g,''); 
      myarray[i][0] = myarray[i][0].replace(/\[/g,'');        
     }                
    }) 
+0

的可怕,因爲它的聲音,我把支架在開始和字符串的結尾,並使用eval –

+0

@Joseph我想過使用jQuery.parseJSON,但我不認爲我的字符串對該函數有效。 http://api.jquery.com/jQuery.parseJSON/我會嘗試發回數據,所以它是有效的。 – Nate

回答

3

雖然我要買弗萊克這個(eval往往是一個安全隱患)太多,我只想做

var myarray = eval("[" + result + "]"); 
+1

我打算髮表相同的答案。在這種情況下,'eval'可以工作(甚至不需要添加括號)。但是在使用'eval'之前,應該知道他在做什麼。 http://stackoverflow.com/questions/197769/when-is-javascripts-eval-not-evil – bfavaretto

+0

@bfavaretto哇:可以通過閱讀這篇SO線程開始!感謝您的鏈接!我回家後肯定會看到它。另外,我嘗試了它沒有括號,它只將它分配給字符串中的最後一個數組,所以我認爲括號是必要的。再次感謝您的鏈接! –

+0

你說得對括號很抱歉!我只用原始字符串的一部分進行了測試...... – bfavaretto

0

您應該使用JSON從服務器返回的數據到你的JS腳本。將它作爲一個數組來操作會更容易。