转换一个javascript字符串转换成2维阵列

问题描述:

我已经在这个数据从使用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

虽然我要买弗莱克这个(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

您应该使用JSON从服务器返回的数据到你的JS脚本。将它作为一个数组来操作会更容易。