2015-09-25 66 views
1

我想下面的字符串轉換爲數組:如何將字符串轉換爲數組,並在Javascript中刪除引號?

str = " ['GHR', 15, 14 ], ['GHR', 12, 20 ] "; 
array = new Array (str); 

當我這樣做: 的console.log(陣列);

它給了我: [ 「[ 'GHR',15,14],[ 'GHR',12,20]」],

,但我想不喜歡引號結果:

[['GHR',15,14],['GHR',12,20]]

請問,如何從數組的開頭和結尾只刪除第一個和最後一個引號? 我使用這個方法從mongodatabse數據,那麼轉換結果行,谷歌的圖表可以看,在Metero平臺

+0

如果你**真的真的真的**信任字符串 - 使用嘗試'eval' –

+2

一個可行的方法:'ARR = JSON.parse('['+ str.replace(/'/ g,''')+']');' – raina77ow

+1

難道你不能以更合理的格式獲得這個數組嗎?像有效的JSON? – deceze

回答

3

您可以使用JSON.parse這將需要你換出單引號

var str = " ['GHR', 15, 14 ], ['GHR', 12, 20 ] "; 
var arr = JSON.parse("[" + str.replace(/'/g,'"') + "]"); 

,或者您可以使用新的功能

var str = " ['GHR', 15, 14 ], ['GHR', 12, 20 ] "; 
var arr = (new Function("return [" + str + "]")()); 

或者讓無論是輸出它做一個數組開始,或使其有效的JSON,因此它可以被正確解析。

+1

使用Function構造函數只是一個調用* eval *的囉嗦方式,不是嗎? – RobG

+0

eval削減數組的第一部分...但該函數正在爲我工​​作..謝謝..epascarello ..謝謝大家。 – Yousef

0

嘗試以下

var str = " ['GHR', 15, 14 ], ['GHR', 12, 20 ] "; 
 
str = str.replace(/\s+/g, ' '); 
 
var arr = str.split('],').join(']|').split('|'); 
 
console.log(arr);

小提琴:http://jsfiddle.net/zo3yvqbL/1/

+0

輸出是一個有兩個字符串的數組,而不是一個有兩個數組的數組。 '['['GHR',15,14]「,」['GHR',12,20]「]' – epascarello

+0

這是真的,輸出是一個有兩個字符串的數組..不是我需要的,謝謝Anand G – Yousef

相關問題