2012-08-02 81 views
13

我有一個字符串使用Javascript/jQuery的字符串轉換爲數組

var traingIds = "${triningIdArray}"; // ${triningIdArray} this value getting from server 
alert(traingIds) // alerts [1,2] 
var type = typeof(traingIds) 
alert(type) // // alerts String 

現在我想將其轉換爲數組,這樣我可以遍歷

我試圖

var trainindIdArray = traingIds.split(','); 
$.each(trainindIdArray, function(index, value) { 
    alert(index + ': ' + value); // alerts 0:[1 , and 1:2] 
}); 

如何解決這個?

回答

11

假設,因爲似乎是的情況下,${triningIdArray}是替換爲JS陣列文字語法服務器端佔位符,只是失去引號。所以:

var traingIds = ${triningIdArray}; 

var traingIds = "${triningIdArray}"; 
4

變化

var trainindIdArray = traingIds.split(',');

var trainindIdArray = traingIds.replace("[","").replace("]","").split(',');

這將基本上去除[],然後分割字符串

54

,數組的文字符號仍然是有效的JSON,你可以use JSON.parse()進行轉換將該字符串轉換爲數組,並從那裏使用它的值。

var test = "[1,2]"; 
parsedTest = JSON.parse(test); //an array [1,2] 

//access like and array 
console.log(parsedTest[0]); //1 
console.log(parsedTest[1]); //2 
+0

這是好的...我從來不知道。謝謝 – maverickosama92 2014-06-19 08:41:29

+0

不錯的做法... – RubyOnRails 2015-01-23 04:46:01

3

檢查了這一點:)

var traingIds = "[1,2]"; // ${triningIdArray} this value getting from server 
alert(traingIds); // alerts [1,2] 
var type = typeof(traingIds); 
alert(type); // // alerts String 

//remove square brackets 
traingIds = traingIds.replace('[',''); 
traingIds = traingIds.replace(']',''); 
alert(traingIds); // alerts 1,2   
var trainindIdArray = traingIds.split(','); 

​for(i = 0; i< trainindIdArray.length; i++){ 
    alert(trainindIdArray[i]); //outputs individual numbers in array 
    }​ 
+1

你可以使用eval。例如。 eval(「[1,2]」)#=> [1,2] – 2016-12-19 06:50:26

+0

讓我感到意外的是@加姆·奇恩的評論不是答案。這個問題真的很重要。它是單線和簡單的。謝謝 – 2018-02-04 12:37:51

+1

@YoungMillie,實際上在JavaScript中使用'eval'可能會很危險,因爲不當使用eval會打開注入攻擊代碼。檢查此[stackoverflow](https://stackoverflow.com/questions/86513/why-is-using-the-javascript-eval-function-a-bad-idea):) – 2018-02-06 07:34:35