2010-11-10 3 views

Odpowiedz

496

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

arrayName.join(delimiter) 

nie wiem o dowolnej funkcji jQuery, która jest lepsza. Potrzebne jest

+0

@jball dzięki za ulepszenie –

+3

Czy moderator może zaakceptować tę odpowiedź lub w jaki sposób udać się na szczyt? Tęskniłem za tą odpowiedzą, początkowo czytając to. – PressingOnAlways

+0

@PressingOnWszystko dzięki uprzejmości moderatorzy nie mogą – Andrew

26

Array.join, ale jeśli chcesz, przyjazne osoby pod numerem phpjs.org utworzyły dla ciebie implode.

Potem trochę pomijany temat. Jak zauważył @jon_darkstar alreadt, jQuery jest JavaScript, a nie odwrotnie. Nie musisz potrzebujesz znać JavaScript, aby móc zrozumieć, jak korzystać z jQuery, ale na pewno nie boli i gdy zaczniesz doceniać ponowne użycie lub zacząć patrzeć na większy obraz, musisz go koniecznie nauczyć.

+1

+1 za powiązanie z dokumentacją, zawsze mile widziane. – rymo

+22

to znowu javascript TO moja ulubiona wtyczka jQuery ;-) –

2

Możemy stworzyć alternatywę implode w sposób 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); 
+10

Podręczny przypadek rzeczy, których nie należy robić. Nie wykonuj konkatenacji ciągów w pętli. Nie zastępuj szybko wbudowanych funkcji wolnym kodem. Używanie konstruktora 'Array' zamiast literałów jest niepoprawnie pełne. Jeśli jesteś zdesperowany, aby odtworzyć funkcję implozji, dobrym pomysłem byłoby owinięcie wbudowanej metody łączenia za pomocą własnej funkcji. Najmądrzej jest nauczyć się języka, w którym programujesz. – mikerobi

0

array.join nie uznając ";" jak separator, ale zastępując go przecinkiem. JQuery, można użyć $.each implodować tablicę (Zauważ, że output_saved_json jest tablica i tmp jest ciąg znaków, który będzie przechowywać implodowała tablicę):

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 podciąg, aby usunąć ostatni „;” dodane na finale bez konieczności. Ale jeśli wolisz, możesz użyć zamiast substring coś 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 bardziej wolniej niż 1st jednego ponieważ musi sprawdzić, czy indeks jest inna niż długość tablicy za każdym razem while $.each nie kończ.

+0

Jeśli otrzymujesz "," zamiast ";" Zapominałeś o przekazaniu ogranicznika do metody łączenia. Spróbuj 'your_array.join (';')' – mikerobi

+0

Próbowałem go w tym czasie, ale nie działało w IE (nie pamiętam dokładnie wersji, ale myślę, że to było IE6).Potrzebowałem go w tym czasie wspierać (aplikacja Enterprise ...). W nowszych przeglądarkach Twoja notatka prawdopodobnie ma sens. Dziękuję za uwagę Mike i dziękuję za głosowanie PRZED zapytaniem DLACZEGO skorzystałem z tej metody. – jaysponsored

+1

Parametr łączenia działa w IE 4, 5, 5,5, 6+. Mogłem pracować w IE3, ale nie mogę dostać mojej kopii do wykonania jakiegokolwiek JavaScriptu, więc nie mogę przetestować. – mikerobi

14

Na przyszłość, jeśli chcesz, aby naśladować zachowanie PHP's implode() when no delimiter is specified (dosłownie dołączyć kawałki razem), trzeba przekazać pusty ciąg znaków w JavaScript na join() przeciwnym razie domyślnie używając jako ograniczniki przecinkami:

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