У меня есть массив в javascript. Я должен перебрать его и передать значения переменной, и каждое значение должно быть разделено запятой.
Это мой код:
var selected = new Array();
jQuery("input[type=checkbox]:checked").each(function() {
selected.push(jQuery(this).attr('id'));
});
Вам нужен Array.join()
var a = new Array("Wind","Rain","Fire");
var myVar1 = a.join(); // assigns "Wind,Rain,Fire" to myVar1
var myVar2 = a.join(", "); // assigns "Wind, Rain, Fire" to myVar2
var myVar3 = a.join(" + "); // assigns "Wind + Rain + Fire" to myVar3
Он не будет работать с аргументами, потому что объект arguments не является массивом, хотя он выглядит так. У него нет метода соединения:
function myFun(arr) {
return 'the list: ' + arr.join(",");
}
myFun(arrayObject);
будет бросать
TypeError: arr.join is not a function
потому что arr
- это не объект jQuery, а обычный объект JavaScript.
selected.join(',')
см. Array.join()
Используйте приведенный ниже код.
var namesArray = new Array("John", "Micheal", "Doe","Steve","Bob"); //array
var resultString = ""; // result variable
//iterate each item of array
for (var i = 0; i < namesArray.length; i++)
resultString += namesArray[i] + ",";
//remove the extra comma at the end, using a regex
resultString = resultString.replace(/,(?=[^,]*$)/, '')
alert(resultString);
Удачи.
ИЛИ, вместо того, чтобы удалять дополнительную запятую, добавьте конечный элемент вне цикла for:
for (var i = 0; i < namesArray.length-1; i++)
resultString += namesArray[i] + ", ";
resultString += namesArray[namesArray.length-1];
Да, я знаю, что это старое сообщение :-)
$.each
используемым OP.