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