2013-03-25 101 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

相關問題