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.


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


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ć.


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

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);


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);

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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.