将 javascript 数组转换为字符串

我试图遍历一个“值”列表并将其转换为字符串:

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

函数工作正常,并显示正确的值。但不知怎么的 Jquery 的。Get ()函数没有得到正确的对象类型,因此失败。我做错了什么?

579953 次浏览

jQuery.each只是在数组上循环,它不对返回的 value做任何事情。您正在寻找 jQuery.map(我也认为 get()是不必要的,因为您不处理 jQuery 对象) :

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

演示


但是为什么在这种情况下要使用 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(', ');

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _.返回一个“ false”值将停止循环。

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

如果 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>

(output will appear in the dev console)

As Felix mentioned, each() is just iterating the array, nothing more.

从数组到字符串的转换是如此简单!

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

就是这样,现在 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+= '}';
}

我只是编辑到 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')? ' ] ':' } ');;
}

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

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

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

将一个数组转换为一个 GET 参数字符串,该参数字符串可以追加到一个 url,可以按照如下方式进行

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;

它将用户转发到/site/search? 页面,其中包含在给 encodeGet 的数组中列出的 get 参数。

不知道这是不是你想要的

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

其结果如下:

A B C

您不应该将数组与列表混淆。

这是一个列表: {...}。它没有长度或其他数组属性。

这是一个数组: [...]。你可以使用数组函数、方法等等,就像有人在这里建议的那样: someArray.toString();

someObj.toString();不适用于任何其他对象类型,如列表。

将数组转换为字符串的四种方法。

强迫到一根绳子上

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()显式连接

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()

这样更简洁,因为它引用数组内部的字符串并正确处理嵌套数组。

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

我需要一个数组来成为一个数组的 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']"

也许有人需要它:)

ToString ()

ToString ()方法返回表示指定数组及其元素的字符串。

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

语法

arr.toString()

返回值

表示数组元素的字符串。

了解更多信息:

Https://developer.mozilla.org/en-us/docs/web/javascript/reference/global_objects/array/tostring

下面是一个使用下划线函数的示例。

var exampleArray = [{name: 'moe', age: 40}, {name: 'larry', age: 50}, {name: 'curly', age: 60}];
var finalArray = _.compact(_.pluck(exampleArray,"name")).join(",");

最终结果是“ Moe Larry Curly”

使用 join()和分隔符。

举个例子

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);

我们可以使用函数 join ()从数组中生成字符串,作为函数 join 的参数,我们赋予它“空字符”。

var newStr =mArray.join('');
const myArray=["hello",4,"programming"];
console.log(myArray.join(''));//hello4programming

我们可以使用 加入函数进行转换

如果您正在寻找要提取的第一个成员,或者数组只有一个成员,请执行以下操作:

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