24

我有一个字符串

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]
});

如何解决这个问题?

4

4 回答 4

74

由于数组文字表示法仍然是有效的 JSON,您可以使用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
于 2012-08-02T11:12:23.453 回答
13

改变

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

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

这将基本上删除[然后]拆分字符串

于 2012-08-02T11:12:15.010 回答
11

假设似乎是这样,${triningIdArray}是一个服务器端占位符,它被 JS 数组文字语法替换,只是丢失了引号。所以:

var traingIds = ${triningIdArray};

不是

var traingIds = "${triningIdArray}";
于 2012-08-02T11:14:18.960 回答
5

看一下这个 :)

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
    }​ 
于 2012-08-02T11:22:50.360 回答