Внедрить массив с помощью jQuery / Javascript?


Ответы:


546

Вы можете сделать это простым JavaScript, используя Array.prototype.join:

arrayName.join(delimiter)

Я не знаю ни одной функции jQuery, которая была бы лучше.


4
Может ли модератор принудительно принять этот ответ или как-то заставить его пойти наверх? Я пропустил этот ответ, изначально читая это.
PressingOnAlways


28

Array.joinэто то, что вам нужно, но если вам нравится, дружелюбные люди на phpjs.org создали implodeдля вас.

Тогда немного не по теме разглагольствования. Как отметил @jon_darkstar alreadt, jQuery - это JavaScript, а не наоборот. Вам не нужно знать JavaScript, чтобы понимать, как использовать jQuery, но это определенно не повредит, и как только вы начнете ценить возможность многократного использования или начнете смотреть на более широкую картину, вам абсолютно необходимо изучить ее.


23
опять же, javascript - это мой любимый плагин jQuery ;-)
jon_darkstar

16

Для дальнейшего использования, если вы хотите имитировать поведение PHP, implode()когда не указан разделитель (буквально просто соедините части вместе), вам нужно передать пустую строку в Javascript, join()иначе она по умолчанию использует запятые в качестве разделителей:

var bits = ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd'];
alert(bits.join());    // H,e,l,l,o, ,W,o,r,l,d
alert(bits.join(''));  // Hello World

10

Использование присоединиться () метод создает и возвращает новую строку путем конкатенации всех элементов в массиве.

Рабочий пример

var arr= ['A','b','C','d',1,'2',3,'4'];
var res= arr.join('; ')
console.log(res);


1

Мы можем создать альтернативу взрыва в javascript:

function my_implode_js(separator,array){
       var temp = '';
       for(var i=0;i<array.length;i++){
           temp +=  array[i] 
           if(i!=array.length-1){
                temp += separator  ; 
           }
       }//end of the for loop

       return temp;
}//end of the function

var array = new Array("One", "Two", "Three");


var str = my_implode_js('-',array);
alert(str);

12
Учебник дело из вещей не делать. Не выполняйте конкатенацию строк в цикле. Не заменяйте быстро встроенные функции собственным медленным кодом. Использование Arrayконструктора вместо литералов неоправданно многословно. Если вы отчаянно пытаетесь воссоздать функцию взрыва, разумнее было бы обернуть встроенный метод соединения своей собственной функцией. Самое умное - выучить язык, на котором программируешь.
mikerobi

0

array.joinне признавал ";" как разделитель, но заменить его запятой. Используя jQuery, вы можете использовать $.eachдля взрыва массива (обратите внимание, что output_saved_json - это массив, а tmp - строка, в которой будет храниться взорванный массив):

var tmp = "";
$.each(output_saved_json, function(index,value) {
    tmp = tmp + output_saved_json[index] + ";";
});

output_saved_json = tmp.substring(0,tmp.length - 1); // remove last ";" added

Я использовал подстроку, чтобы удалить последний ";" добавлено в финале без необходимости. Но если вы предпочитаете, вы можете использовать вместо этого substringчто-то вроде:

var tmp = "";
$.each(output_saved_json, function(index,value) {
    tmp = tmp + output_saved_json[index];

    if((index + 1) != output_saved_json.length) {
         tmp = tmp + ";";
    }
});

output_saved_json = tmp;

Я думаю, что это последнее решение медленнее, чем первое, потому что оно должно каждый раз проверять, отличается ли индекс от длины массива, пока $.eachне заканчивается.


Если вы получили «,» вместо «;» вы забыли передать разделитель в метод соединения. Попробуйтеyour_array.join(';')
mikerobi

Я попробовал это в то время, но это не работало в IE (я не помню точную версию, но я думаю, что это был IE6). Мне нужно было поддерживать его в то время (приложение Enterprise ...). В новых браузерах ваша заметка, вероятно, имеет смысл. Спасибо за примечание, Майк, и спасибо за понижение голоса, прежде чем спрашивать, ПОЧЕМУ я использовал этот метод.
jaysponsored

1
Параметр соединения работает в IE 4, 5, 5.5, 6+. Возможно, я не работал в IE3, но я не могу заставить свою копию выполнять любой JavaScript, поэтому я не могу проверить.
Микероби

Да, это работает. Но не с ";" Присоединяется, но заменяет ";" с ",", по крайней мере на Server 2003.
jaysponsored
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.