web-dev-qa-db-fra.com

Imploser un tableau avec jQuery / Javascript?

Puis-je imploser un tableau dans jQuery comme dans PHP?

265
Omega

Vous pouvez le faire en JavaScript simple, utilisez Array.prototype.join :

_arrayName.join(delimiter)
_

Je ne connais aucune fonction jQuery qui soit meilleure.

527
jon_darkstar

Comme ça:

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

Array.join est ce dont vous avez besoin, mais si vous le souhaitez, les personnes amicales de phpjs.org ont créé implode pour vous.

Puis, quelques sujets légèrement délirants. Comme @jon_darkstar alreadt l'a fait remarquer, jQuery est un script JavaScript et non l'inverse. Vous n'avez pas besoin de connaître JavaScript pour pouvoir comprendre comment utiliser jQuery, mais cela ne fait certainement pas de mal et une fois que vous commencez à apprécier la réutilisabilité ou commencez à regarder la plus grande image que vous devez absolument apprendre.

27
nikc.org

Pour référence future, si vous souhaitez imiter le comportement de implode() de PHP lorsque _ , aucun délimiteur n'est spécifié (littéralement simplement joindre les morceaux ensemble), vous devez passer une chaîne vide dans la join() de Javascript, sinon la valeur par défaut sera d'utiliser des virgules comme séparateurs:

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
15
Robbie Averill

Utilisez join () la méthode crée et retourne une nouvelle chaîne en concaténant tous les éléments d'un tableau.

Exemple de travail

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

Nous pouvons créer une alternative d'implodation de en 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);
1
Vijay Verma

array.join ne reconnaissait pas ";" comment un séparateur, mais en le remplaçant par une virgule. Avec jQuery, vous pouvez utiliser $.each pour imploser un tableau (notez que output_saved_json est le tableau et tmp est la chaîne qui stockera le tableau implodé):

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

J'ai utilisé une sous-chaîne pour supprimer le dernier ";" ajouté au final sans nécessité. Mais si vous préférez, vous pouvez utiliser à la place substring quelque chose comme:

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;

Je pense que cette dernière solution est plus lente que la première, car elle doit vérifier si l’index est différent de la longueur d’un tableau à chaque fois que $.each ne se termine pas.

0
jaysponsored