jQuery: Convertir javascript en una cadena

Estoy tratando de iterar sobre una list de "valor" y convertirla en una cadena. Aquí está el código:

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

La function alert () funciona perfectamente y muestra el valor correcto. Pero de alguna manera, la function .get () de jquery no obtiene el tipo correcto de object y falla. ¿Qué estoy haciendo mal?

Si value es array asociativo, dicho código funcionará bien:

 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> 

¡Convertir de matriz a cadena es tan fácil!

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

Eso es todo Ahora A es una cadena. 🙂

Puede usar .toString() para unir una matriz con una coma.

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

O bien, configure el separador con array.join('; '); // result: a; b; c array.join('; '); // result: a; b; c array.join('; '); // result: a; b; c .

no estoy seguro de si esto es lo que querías, pero

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

Esto da como resultado el siguiente resultado:

A B C

Cuatro methods para convertir una matriz en una cadena.

Coercing a una string

 var arr = ['a', 'b', 'c'] + []; // "a,b,c" var arr = ['a', 'b', 'c'] + ''; // "a,b,c" 

Llamar a .toString()

 var arr = ['a', 'b', 'c'].toString(); // "a,b,c" 

Unirse explícitamente usando .join()

 var arr = ['a', 'b', 'c'].join(); // "a,b,c" (Defaults to ',' seperator) var arr = ['a', 'b', 'c'].join(','); // "a,b,c" 

Puede usar otros separadores, por ejemplo, ', '

 var arr = ['a', 'b', 'c'].join(', '); // "a, b, c" 

Usando JSON.stringify()

Esto es más limpio, ya que cita cadenas dentro de la matriz y maneja las matrices anidadas correctamente.

 var arr = JSON.stringify(['a', 'b', 'c']); // '["a","b","c"]' 

jQuery.each simplemente hace un bucle sobre la matriz, no hace nada con el valor de retorno Δ . Está buscando jQuery.map (también creo que get() es innecesario ya que no está tratando con objects jQuery):

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

MANIFESTACIÓN


Pero, ¿por qué utilizar jQuery en este caso? map solo introduce una llamada de function innecesaria por elemento.

 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(', '); 

Δ: solo usa el valor de retorno si debe seguir repitiendo los elementos o no. Devolver un valor de "falsy" detendrá el ciclo.

esta es mi function, convertir object o matriz a 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+= '}'; } 

solo edito a 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); 

O

 var arr = new Array(); $.each([1, 2, 3], function(idx2,val2) { arr.push(idx2 + ":" + val2); }); console.log(arr.join(', ')); 

Necesitaba una matriz para convertirme en una representación de String de una matriz. Quiero decir que necesitaba eso

 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']" 

tal vez alguien lo necesite 🙂

convertir una matriz en una cadena de parameters GET que se puede adjuntar a una url se puede hacer de la siguiente manera

 function encodeGet(array){ return getParams = $.map(array , function(val,index) { var str = index + "=" + escape(val); return str; }).join("&"); } 

llamar a esta function como

 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; 

que reenviará al usuario a / site / search? página con los parameters get delineados en la matriz dada a encodeGet.

No debe confundir Array's con Lists … Esta es una list: {…} y no tiene longitud u otras properties de Array.

Esta es una Matriz: […] y puedes usar funciones de matriz, methods y así, como alguien sugirió aquí: someArray.toString ();

"someObj.toString ();" simplemente no funcionará en ningún otro tipo de objects, como lists. 😉

Array.prototype.toString ()

El método toString () devuelve una cadena que representa la matriz especificada y sus elementos.

 var months = ["Jan", "Feb", "Mar", "Apr"]; months.toString(); // "Jan,Feb,Mar,Apr" 

Sintaxis

 arr.toString() 

Valor de retorno

Una cadena que representa los elementos de la matriz.

para más información :

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toString