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?
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);
});
console.log(blkstr.join(", "));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
(la sortie apparaîtra dans la console de développement)
Comme Felix l'a mentionné, each()
ne fait qu'itérer le tableau, rien de plus.
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. :)
Vous pouvez utiliser .toString()
pour joindre 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
.
je ne sais pas si c'est ce que tu voulais mais
var arr = [A, B, C];
var arrString = arr.join(", ");
Cela se traduit par la sortie suivante:
A, B, C
Quatre méthodes pour convertir un tableau en chaîne.
Forcer à une ficelle
var arr = ['a', 'b', 'c'] + []; // "a,b,c"
var arr = ['a', 'b', 'c'] + ''; // "a,b,c"
Appeler .toString()
var arr = ['a', 'b', 'c'].toString(); // "a,b,c"
Rejoindre explicitement en utilisant .join()
var arr = ['a', 'b', 'c'].join(); // "a,b,c" (Defaults to ',' seperator)
var arr = ['a', 'b', 'c'].join(','); // "a,b,c"
Vous pouvez utiliser d'autres séparateurs, par exemple, ', '
var arr = ['a', 'b', 'c'].join(', '); // "a, b, c"
Utilisation de JSON.stringify()
Ceci est plus propre, car il cite des chaînes à l'intérieur du tableau et gère correctement les tableaux imbriqués.
var arr = JSON.stringify(['a', 'b', 'c']); // '["a","b","c"]'
jQuery.each
est juste en boucle sur le tableau, il ne fait rien avec la valeur de retourΔ. Vous recherchez jQuery.map
(Je pense également que get()
est inutile car vous ne traitez pas d'objets jQuery):
var blkstr = $.map(value, function(val,index) {
var str = index + ":" + val;
return str;
}).join(", ");
Mais pourquoi utiliser jQuery du tout dans ce cas? map
introduit uniquement un appel de fonction inutile 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(', ');
∆: Il utilise uniquement la valeur de retour pour continuer ou non de passer en boucle sur les éléments. Renvoyer une valeur "falsy" arrêtera la boucle.
c'est ma fonction, convertir un objet ou un tableau en json
function obj2json(_data){
str = '{ ';
first = true;
$.each(_data, function(i, v) {
if(first != true)
str += ",";
else first = false;
if ($.type(v)== 'object' )
str += "'" + i + "':" + obj2arr(v) ;
else if ($.type(v)== 'array')
str += "'" + i + "':" + obj2arr(v) ;
else{
str += "'" + i + "':'" + v + "'";
}
});
return str+= '}';
}
je viens de modifier à v0.2 ^. ^
function obj2json(_data){
str = (($.type(_data)== 'array')?'[ ': '{ ');
first = true;
$.each(_data, function(i, v) {
if(first != true)
str += ",";
else first = false;
if ($.type(v)== 'object' )
str += '"' + i + '":' + obj2json(v) ;
else if ($.type(v)== 'array')
str += '"' + i + '":' + obj2json(v) ;
else{
if($.type(_data)== 'array')
str += '"' + v + '"';
else
str += '"' + i + '":"' + v + '"';
}
});
return str+= (($.type(_data)== 'array')? ' ] ':' } ');;
}
var arr = new Array();
var blkstr = $.each([1, 2, 3], function(idx2,val2) {
arr.Push(idx2 + ":" + val2);
return arr;
}).join(', ');
console.log(blkstr);
OU
var arr = new Array();
$.each([1, 2, 3], function(idx2,val2) {
arr.Push(idx2 + ":" + val2);
});
console.log(arr.join(', '));
convertir un tableau en une chaîne de paramètres GET pouvant être ajoutée à une URL peut être effectué comme suit
function encodeGet(array){
return getParams = $.map(array , function(val,index) {
var str = index + "=" + escape(val);
return str;
}).join("&");
}
appeler cette fonction comme
var getStr = encodeGet({
search: $('input[name="search"]').val(),
location: $('input[name="location"]').val(),
dod: $('input[name="dod"]').val(),
type: $('input[name="type"]').val()
});
window.location = '/site/search?'+getStr;
qui transmettra l'utilisateur au/site/search? page avec les paramètres get décrits dans le tableau donné à encodeGet.
J'avais besoin d'un tableau pour devenir une représentation sous forme de chaîne d'un tableau .__ Je veux dire que j'avais besoin de ça
var a = ['a','b','c'];
//became a "real" array string-like to pass on query params so was easy to do:
JSON.stringify(a); //-->"['a','b','c']"
peut-être que quelqu'un en a besoin :)
Il ne faut pas confondre les tableaux avec les listes .... C'est une liste: {...} qui n'a pas de longueur ni d'autres propriétés de tableau.
Ceci est un tableau: [...] et vous pouvez utiliser des fonctions de tableau, des méthodes et ainsi, comme quelqu'un suggéré ici: someArray.toString ();
"someObj.toString ();" Tout simplement ne fonctionnera sur aucun autre type d'objet, comme les listes. ;-)
Array.prototype.toString ()
La méthode toString () renvoie une chaîne représentant le tableau spécifié et ses éléments.
var months = ["Jan", "Feb", "Mar", "Apr"];
months.toString(); // "Jan,Feb,Mar,Apr"
Syntaxe
arr.toString()
Valeur de retour
Une chaîne représentant les éléments du tableau.
pour plus d'informations :
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toString
exemple de travail
var arr = ['a', 'b', 'c', 1, 2, '3'];
// using toString method
var rslt = arr.toString();
console.log(rslt);
// using join method. With a separator '-'
rslt = arr.join('-');
console.log(rslt);
// using join method. without a separator
rslt = arr.join('');
console.log(rslt);
Voici un exemple utilisant des fonctions de soulignement.
var exampleArray = [{name: 'moe', age: 40}, {name: 'larry', age: 50}, {name: 'curly', age: 60}];
var finalArray = _.compact(_.pluck(exampleArray,"name")).join(",");
Le résultat final serait "moe, larry, curly"