Ein Array mit jQuery / Javascript implodieren?

279

Kann ich ein Array in jQuery wie in PHP implodieren?

Omega
quelle

Antworten:

546

Sie können dies in einfachem JavaScript tun. Verwenden Sie Array.prototype.join:

arrayName.join(delimiter)

Ich kenne keine bessere jQuery-Funktion.

jon_darkstar
quelle
4
Kann eine Moderatorentruppe diese Antwort akzeptieren oder wie kann sie nach oben gelangen? Ich habe diese Antwort beim ersten Lesen verpasst.
Drücken Sie immer
62

So was:

[1,2,3,4].join('; ')
mikerobi
quelle
28

Array.joinist das, was Sie brauchen, aber wenn Sie möchten, haben die freundlichen Leute von phpjs.orgimplode für Sie erstellt.

Dann etwas abweichendes Thema. Wie @jon_darkstar bereits erwähnt hat, ist jQuery JavaScript und nicht umgekehrt. Sie müssen nicht müssen JavaScript kennen , um zu verstehen , wie jQuery verwenden, aber es ist sicherlich nicht schaden , und wenn Sie beginnen Wiederverwertbarkeit zu schätzen oder beginnen auf das größere Bild suchen Sie unbedingt benötigen , es zu lernen.

nikc.org
quelle
23
Andererseits
16

Wenn Sie zum späteren Nachschlagen das Verhalten von PHPsimplode() nachahmen möchten, wenn kein Trennzeichen angegeben ist (verbinden Sie die Teile buchstäblich nur miteinander), müssen Sie eine leere Zeichenfolge an Javascript übergeben, da join()sonst standardmäßig Kommas als Trennzeichen verwendet werden:

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
quelle
10

Mit der Methode join () wird eine neue Zeichenfolge erstellt und zurückgegeben, indem alle Elemente in einem Array verkettet werden.

Arbeitsbeispiel

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

Deepu Reghunath
quelle
1

Wir können eine Alternative zum Implodieren von in Javascript erstellen:

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
quelle
12
Lehrbuch Fall von Dingen nicht zu tun. Führen Sie keine Zeichenfolgenverkettung in einer Schleife durch. Ersetzen Sie schnell eingebaute Funktionen nicht durch Ihren eigenen langsamen Code. Die Verwendung des ArrayKonstruktors anstelle von Literalen ist unnötig ausführlich. Wenn Sie die implodierende Funktion unbedingt neu erstellen möchten, ist es klug, die integrierte Join-Methode mit Ihrer eigenen Funktion zu versehen. Das Klügere ist, die Sprache zu lernen, in der Sie programmieren.
Mikerobi
0

array.joinerkannte nicht ";" wie ein Trennzeichen, aber durch Komma ersetzen. Mit jQuery können Sie $.eachein Array implodieren (Beachten Sie, dass output_saved_json das Array und tmp die Zeichenfolge ist, in der das implodierte Array gespeichert wird):

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

Ich habe Teilzeichenfolge verwendet, um das letzte ";" im Finale ohne Notwendigkeit hinzugefügt. Wenn Sie es vorziehen, können Sie stattdessen substringFolgendes verwenden:

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;

Ich denke, diese letzte Lösung ist langsamer als die erste, da jedes Mal überprüft werden muss, ob sich der Index von der Länge des Arrays $.eachunterscheidet, ohne zu enden.

jaysponsored
quelle
Wenn Sie ein ',' anstelle eines ';' Sie haben vergessen, das Trennzeichen an die Join-Methode zu übergeben. Versuchen Sieyour_array.join(';')
mikerobi
Ich habe es in dieser Zeit versucht, aber es hat im IE nicht funktioniert (ich erinnere mich nicht genau an die Version, aber ich denke, das war IE6). Ich musste es in dieser Zeit unterstützen (Enterprise App ...). In neueren Browsern ist Ihre Notiz wahrscheinlich sinnvoll. Danke für den Hinweis, Mike, und danke für die Ablehnung, BEVOR du fragst, WARUM ich diese Methode angewendet habe.
Jaysponsored
1
Der Join-Parameter funktioniert in IE 4, 5, 5.5, 6+. Ich habe möglicherweise nicht in IE3 gearbeitet, aber ich kann meine Kopie nicht dazu bringen, JavaScript auszuführen, daher kann ich nicht testen.
Mikerobi
Ja es funktioniert. Aber nicht mit ";". Es tritt bei, ersetzt aber ";" mit ",", zumindest auf Server 2003.
jaysponsored