jquery:将JavaScript数组转换为string

我想遍历一个“值”列表并将其转换为一个string。 这里是代码:

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

alert()函数工作得很好,并显示正确的值。 但不知何故,jQuery的.get()函数没有得到正确的sorting对象,并失败。 我究竟做错了什么?

如果value是关联数组,这样的代码将正常工作:

 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> 

从数组转换为string非常简单!

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

就是这样现在A是一个string。 🙂

您可以使用.toString()以逗号连接数组。

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

或者,用array.join('; '); // result: a; b; c设置分隔符array.join('; '); // result: a; b; c array.join('; '); // result: a; b; c array.join('; '); // result: a; b; c

不知道这是你想要的,但是

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

这导致以下输出:

A,B,C

将数组转换为string的四种方法

胁迫一个string

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

调用.toString()

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

显式join使用.join()

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

您可以使用其他分隔符,例如', '

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

使用JSON.stringify()

这是更干净的,因为它引用数组中的string,并正确处理嵌套数组。

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

jQuery.each只是遍历数组,它不会对返回值Δ做任何事情。 你正在寻找jQuery.map (我也认为get()是不必要的,因为你没有处理jQuery对象):

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

DEMO


但是为什么在这种情况下使用jQuery呢? map只会引入每个元素的不必要的函数调用。

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

△:只使用返回值是否继续循环。 返回“falsy”值将会停止循环。

这是我的function,将对象或数组转换成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+= '}'; } 

我只是编辑到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); 

要么

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

我需要一个数组来成为一个数组的string表示我的意思是我需要这个

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

也许有人需要它:)

将一个数组转换为一个可以附加到一个url的GET参数string可以做到如下

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

调用这个函数

 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; 

这将转发用户到/网站/search? 页面中给出的数组中给出的获取参数encodeGet。

不应该混淆数组与列表…这是一个列表:{…}并没有长度,或其他数组属性。

这是一个数组:[…],你可以使用数组函数,方法等等,就像这里所提到的一样:someArray.toString();

“someObj.toString();” 只是不会在任何其他对象types,如列表。 😉

Array.prototype.toString()

toString()方法返回一个表示指定数组及其元素的string。

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

句法

 arr.toString() 

返回值

表示数组元素的string。

了解更多信息 :

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