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 に答える