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]
});
как решить эту проблему?
Ответы
Ответ 1
Предполагая, что, как представляется, ${triningIdArray}
является заполнителем на стороне сервера, который заменяется синтаксисом массива JS-массива, просто теряйте кавычки. Итак:
var traingIds = ${triningIdArray};
не
var traingIds = "${triningIdArray}";
Ответ 2
Поскольку символьная буква массива все еще действительна 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
Ответ 3
Изменить
var trainindIdArray = traingIds.split(',');
к
var trainindIdArray = traingIds.replace("[","").replace("]","").split(',');
В основном это удалит [
и ]
, а затем разделит строку
Ответ 4
проверьте это:)
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
}