169 votes

Jquery: Convertir un tableau javascript en chaîne

J'essaye de parcourir une liste de "valeurs" et de la convertir en chaîne. Voici le code:

 var blkstr = $.each(value, function(idx2,val2) {                    
     var str = idx2 + ":" + val2;
     alert(str);
     return str;
}).get().join(", ");    
 

La fonction alert () fonctionne très bien et affiche la valeur appropriée. Mais d'une manière ou d'une autre, la fonction .get () de jquery n'obtient pas le bon type d'objet et échoue. Qu'est-ce que je fais mal?

157voto

Shadow Wizard Points 38568

Si value est un tableau associatif, ce code fonctionnera correctement:

 var value = { "aaa": "111", "bbb": "222", "ccc": "333" };
var blkstr = [];
$.each(value, function(idx2,val2) {                    
     var str = idx2 + ":" + val2;
     blkstr.push(str);
});
alert(blkstr.join(", "));
 

Comme Felix l'a mentionné, each() fait qu'itérer le tableau, rien de plus.

Cas de test en direct .

153voto

Hayath Hayathms Points 667

Conversion de tableau en chaîne est si facile!

 var A = ['Sunday','Monday','Tuesday','Wednesday','Thursday']
array = A + ""
 

Ça y est, maintenant A est une chaîne. :)

131voto

Justin Points 2493

Vous pouvez utiliser .toString() pour rejoindre un tableau avec une virgule.

 var array = ['a', 'b', 'c'];
array.toString(); // result: a,b,c
 

Ou définissez le séparateur avec array.join('; '); // result: a; b; c .

91voto

Nicholas Points 901

je ne sais pas si c'est ce que tu voulais mais

 var arr = [A, B, C];
var arrString = arr.join("");
 

17voto

Felix Kling Points 247451

jQuery.each est juste de boucler sur le tableau, il ne veut pas faire n'importe quoi avec la valeur de retour. Vous êtes à la recherche pour jQuery.map (je pense aussi qu' get() est inutile, car vous n'avez pas affaire avec jQuery objets):

var blkstr = $.map(value, function(val,index) {                    
     var str = index + ":" + val;
     return str;
}).join(", ");  

DÉMO


Mais pourquoi utiliser jQuery dans ce cas? map seulement introduit une fonction inutile d'appel par élément.

var values = [];

for(var i = 0, l = value.length; i < l; i++) {
    values.push(i + ':' + value[i]);
}

// or if you actually have an object:

for(var id in value) {
    if(value.hasOwnProperty(id)) {
        values.push(id + ':' + value[id]);
    }
}

var blkstr = values.join(', ');

∆: On utilise la valeur de retour s'il devait continuer à en boucle sur les éléments ou pas. Retour d'un "falsy" valeur arrêter la boucle.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X