2012-08-02 11 views
13

tengo una cadenaJavascript/jQuery Convierte la cadena a la matriz

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

ahora quiero convertir esto en conjunto para que pueda recorrer

he intentado

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

cómo resolver ¿esta?

Respuesta

11

Suponiendo, como parece ser el caso, ${triningIdArray} es un marcador de posición del lado del servidor que se reemplaza con la sintaxis de matrices JS-literal, simplemente perder las cotizaciones. Por lo tanto:

var traingIds = ${triningIdArray}; 

no

var traingIds = "${triningIdArray}"; 
4

Cambio

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

a

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

que, básicamente, se eliminará [ y ] y luego dividir la cadena

54

Desde la notación de matriz literal es aún válida JSON, se puede use JSON.parse() para convertir esa cadena en una matriz, y a partir de ahí, usar sus valores.

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

que es bueno ... yo nunca sabía. gracias – maverickosama92

+0

Buen enfoque ... – RubyOnRails

3

mira esto :)

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

Puede usar eval. p.ej. eval ("[1,2]") # => [1,2] –

+0

Me sorprende @Sam Kah Chiin no es una respuesta. Realmente es una gran oferta para esta pregunta. es solo alineado y simple. Gracias –

+1

@YoungMillie, usar 'eval' en javascript puede ser peligroso ya que el uso inadecuado de eval abre tu código para ataques de inyección. Comprueba esto [stackoverflow] (https://stackoverflow.com/questions/86513/why-is-using-the-javascript-eval-function-a-bad-idea) :) –