2013-03-25 67 views
1

为了将字符串转换为一维JavaScript数组,我可以使用'eval()'。但如何将字符串转换为二维数组?如何将字符串转换为二维数组?

我的字符串是:

['stage 1', 1, 11, 111],['Stage 2', 2, 22, 222] 

执行 “EVAL(...)” 这样的参数创建一个1个阵列4个元素:[ '阶段',1,11,111]。相反,我想拥有2个元素的数组,每个元素又是另一个4个元素的数组。我相信,我可以通过','将原始字符串拆分为子串列表,并为每个子串调用'eval',并将结果组合成一个2维数组。

但是我相信更高效的方式应该已经存在。有没有?如果是,请告知。

非常感谢您提前!

+0

只是包装在外部对大括号:' '[' +字符串+“] “'。 – RobG 2013-03-25 05:47:03

回答

3

而不是使用eval,这将是更好地使用JSON.parse

var string = '["stage 1", 1, 11, 111],["Stage 2", 2, 22, 222]'; 
var array2d = JSON.parse("[" + string + "]"); 
console.log(array2d); 

在这里看到演示:http://jsfiddle.net/y94zz/

+1

“更好”是相对的,它为什么比'eval'好?无论如何,JSON.parse shim将使用'eval'。 – RobG 2013-03-25 05:48:11

+0

当一个更好的方法如'JSON.parse'已经存在时,为什么要使用'eval'?在使用'eval'的时候,你甚至无法用任何标准的缩小器/编译器来缩小你的代码! – spaceman12 2013-03-25 05:59:25

+0

@RobG - 所有主流浏览器现在支持'JSON.parse',有不使用'eval'的垫片(例如Crockford自己的[JSON-js](https://github.com/douglascrockford/JSON-js) - 请参阅'json_parse.js'或'json_parse_state.js'),'JSON.parse'比'eval'更安全,因为它不会执行任意代码,也不会在调用上下文中修改变量。 – 2013-03-25 06:17:53

相关问题