Zaimplementować tablicę za pomocą jQuery / JavaScript?

Odpowiedzi:

546

Możesz to zrobić w zwykłym JavaScript, użyj Array.prototype.join:

arrayName.join(delimiter)

Nie znam żadnej lepszej funkcji jQuery.

jon_darkstar
źródło
4
Czy siła moderatora może zaakceptować tę odpowiedź lub w jaki sposób sprawić, by wspięła się na szczyt? Na początku tęskniłem za odpowiedzią.
PressingOnAlways
62

Lubię to:

[1,2,3,4].join('; ')
mikerobi
źródło
28

Array.joinjest to, czego potrzebujesz, ale jeśli chcesz, przyjaźni ludzie z phpjs.org stworzyli implodedla Ciebie.

Potem trochę nie na temat rantingu. Jak zauważył @jon_darkstar alreadt, jQuery jest JavaScript, a nie odwrotnie. Nie musisz znać JavaScriptu, aby zrozumieć, jak korzystać z jQuery, ale na pewno nie zaszkodzi, a kiedy zaczniesz doceniać możliwość ponownego użycia lub zaczniesz patrzeć na większy obraz, koniecznie musisz się go nauczyć.

nikc.org
źródło
23
z drugiej strony javascript JEST moją ulubioną wtyczką jQuery ;-)
jon_darkstar
16

Dla przyszłego odniesienia, jeśli chcesz naśladować zachowanie PHP, implode()gdy nie jest określony żaden ogranicznik (dosłownie po prostu połącz elementy razem), musisz przekazać pusty ciąg do Javascript, w join()przeciwnym razie domyślnie używa przecinków jako ograniczników:

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
Robbie Averill
źródło
10

Użyj metody join () tworzy i zwraca nowy ciąg, łącząc wszystkie elementy w tablicy.

Przykład roboczy

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

Deepu Reghunath
źródło
1

Możemy stworzyć alternatywę implode w 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);
Vijay Verma
źródło
12
Podręcznik przypadku rzeczy, których nie należy robić. Nie wykonuj konkatenacji łańcuchów w pętli. Nie zastępuj szybkich wbudowanych funkcji własnym wolnym kodem. Używanie Arraykonstruktora zamiast literałów jest niepotrzebnie gadatliwe. Jeśli desperacko chcesz odtworzyć funkcję implode, sprytnie byłoby owinąć wbudowaną metodę łączenia własną funkcją. Mądrzejszą rzeczą jest nauczenie się języka, w którym programujesz.
mikerobi 17.04.2013
0

array.joinnie rozpoznał „;” jak separator, ale zastępując go przecinkiem. Korzystając z jQuery, możesz $.eachzaimplementować tablicę (zwróć uwagę, że output_saved_json to tablica, a tmp to ciąg znaków, który będzie przechowywać tablicę implodowaną):

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

Użyłem podłańcucha do usunięcia ostatniego „;” dodane w finale bez konieczności. Ale jeśli wolisz, możesz zamiast tego użyć substringczegoś takiego:

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;

Myślę, że to ostatnie rozwiązanie jest wolniejsze niż pierwsze, ponieważ musi za każdym razem sprawdzać, czy indeks różni się od długości tablicy, dopóki $.eachsię nie kończy.

jaysponsorowane
źródło
Jeśli otrzymujesz „,” zamiast „;” zapomniałeś przekazać separator do metody łączenia. Spróbujyour_array.join(';')
mikerobi 17.04.13
Próbowałem w tym czasie, ale nie działało w IE (nie pamiętam dokładnej wersji, ale myślę, że to była IE6). W tym czasie musiałem go wspierać (aplikacja Enterprise ...). W nowszych przeglądarkach Twoja notatka prawdopodobnie ma sens. Dziękuję za notatkę Mike i dziękuję za zdanie PRZED zapytaniem DLACZEGO użyłem tej metody.
jaysponsorowany
1
Parametr łączenia działa w IE 4, 5, 5.5, 6+. Nie mogłem pracować w IE3, ale nie mogę zmusić mojej kopii do uruchomienia JavaScript, więc nie mogę przetestować.
mikerobi
Tak to działa. Ale nie z „;”. Dołącza, ale zastępuje „;” z „,”, przynajmniej na serwerze 2003.
jaysponsorowany