Включити масив з jQuery / Javascript?


Відповіді:


546

Це можна зробити в простому JavaScript, використовуйте Array.prototype.join:

arrayName.join(delimiter)

Я не знаю жодної функції jQuery, яка була б кращою.


4
Чи може модератор змусити прийняти цю відповідь чи дещо, як змусити її перейти до вершини? Я пропустив цю відповідь, спочатку прочитавши це.
— Натискання на завжди


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

Використовуйте метод join () створює та повертає нову рядок шляхом об'єднання всіх елементів у масив.

Робочий приклад

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конструктора замість літералів зайве багатослівне. Якщо ви відчайдушно відтворюєте функцію implode, розумною річчю було б обгорнути вбудований метод з'єднання власною функцією. Розумніше - вивчити мову, якою ви програмуєте.
— 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 Enterprise ...). У нових браузерах ваша примітка, мабуть, має сенс. Дякую за зауваження Майку і дякую за голосування перед тим, як запитати, Чому я використовував цей метод.
— jaysponsored

1
Параметр приєднання працює в IE 4, 5, 5.5, 6+. Я б, можливо, не працював в IE3, але я не можу отримати свою копію для виконання JavaScript, тому я не можу перевірити.
— mikerobi

Так, це працює. Але не з ";". Він приєднується, але замінює ";" з ",", принаймні на сервері 2003.
— jaysponsored
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.