转换一个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,'');
}
})
虽然我要买弗莱克这个(eval
往往是一个安全隐患)太多,我只想做
var myarray = eval("[" + result + "]");
我打算发表相同的答案。在这种情况下,'eval'可以工作(甚至不需要添加括号)。但是在使用'eval'之前,应该知道他在做什么。 http://stackoverflow.com/questions/197769/when-is-javascripts-eval-not-evil – bfavaretto
@bfavaretto哇:可以通过阅读这篇SO线程开始!感谢您的链接!我回家后肯定会看到它。另外,我尝试了它没有括号,它只将它分配给字符串中的最后一个数组,所以我认为括号是必要的。再次感谢您的链接! –
你说得对括号很抱歉!我只用原始字符串的一部分进行了测试...... – bfavaretto
您应该使用JSON从服务器返回的数据到你的JS脚本。将它作为一个数组来操作会更容易。
的可怕,因为它的声音,我把支架在开始和字符串的结尾,并使用eval –
@Joseph我想过使用jQuery.parseJSON,但我不认为我的字符串对该函数有效。 http://api.jquery.com/jQuery.parseJSON/我会尝试发回数据,所以它是有效的。 – Nate