Включити масив з 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.