Czy mogę implodować tablicę w jQuery tak jak w PHP?Implode tablicę z jQuery/Javascript?
Odpowiedz
tak:
[1,2,3,4].join('; ')
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
@jball dzięki za ulepszenie –
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
@PressingOnWszystko dzięki uprzejmości moderatorzy nie mogą – Andrew
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 za powiązanie z dokumentacją, zawsze mile widziane. – rymo
to znowu javascript TO moja ulubiona wtyczka jQuery ;-) –
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);
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
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.
Jeśli otrzymujesz "," zamiast ";" Zapominałeś o przekazaniu ogranicznika do metody łączenia. Spróbuj 'your_array.join (';')' – mikerobi
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
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
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
Wypróbuj http://javascript.ru/php/implode – Sergey