Преобразование массива в строку с разделителями-пробелами при объединении отдельных значений

У меня есть несколько полей select на моей странице. Я могу легко получить значения всех выбранных дочерних элементов option в jQuery следующим образом:

$("#select").val();

Это дает мне такой массив:

["Hello", "Test", "Multiple Words"]

Теперь я хочу преобразовать этот массив в строку с разделителями-пробелами, но также соединить отдельные слова в каждом значении тире, чтобы в итоге получилось следующее:

"Hello Test Multiple-Words"

Как мне это сделать?


person daGUY    schedule 30.01.2013    source источник
comment
whathaveyoutried.com   -  person Jay Blanchard    schedule 31.01.2013


Ответы (5)


Если Multiple-Words может быть как Multiple Words, то вы можете просто использовать .join и получить конечный результат как "Hello Test Multiple Words".

Если нет, вы можете написать цикл, как показано ниже, чтобы получить результат.

var myList = ["Hello", "Test", "Multiple Words"];
var result = '';
for (var i = 0; i < myList.length; i++) {
   result += myList[i].replace(/\s/g, '-') + ' ';
}

ДЕМО: http://jsfiddle.net/bmXk5/

person Selvakumar Arumugam    schedule 30.01.2013

Вот простая строка с Array.map:

var arr = ["Hello", "Test", "Multiple Words"];
arr.map(function(val) { return val.replace(' ', '-') }).join(' ');
person dan-lee    schedule 30.01.2013

Это должно сделать работу за вас.

function combineWords(arr) {
    var i, l;
    for(i = 0, l = arr.length; i < l; i++) {
        arr[i] = arr[i].replace(' ', '-') ;
    }
    return arr;
}
person Kyle    schedule 30.01.2013

person    schedule
comment
Какой смысл использовать регулярное выражение вместо String.replace(" ", "-")? - person crush; 31.01.2013
comment
использование строки в качестве первого параметра функции replace заменит только первое вхождение, а использование регулярного выражения с глобальным флагом заменит все вхождения. - person CD..; 31.01.2013
comment
Странно - не то поведение, которого я ожидал. Спасибо, что прояснили это. - person crush; 31.01.2013

person    schedule
comment
Вы можете создать строку внутри того же цикла for, который также сохраняет исходное значение в списке. - person Selvakumar Arumugam; 31.01.2013