jQuery:将javascript数组转换为字符串

Neo*_*Neo 108 javascript arrays string jquery frontend

我正在尝试迭代"值"列表并将其转换为字符串.这是代码:

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

alert()函数工作正常并显示正确的值.但不知何故,jquery的.get()函数无法获得正确的对象并失败.我究竟做错了什么?

Sha*_*ard 125

如果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(", "));
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

(输出将出现在开发控制台中)

正如费利克斯所提到的,each()只是迭代数组,仅此而已.


Spi*_*man 114

从数组转换为字符串非常简单!

var A = ['Sunday','Monday','Tuesday','Wednesday','Thursday']
array = A + ""
Run Code Online (Sandbox Code Playgroud)

就是现在A是一个字符串.:)

  • 如果你做`[1,2,[3]].toString()`,你会得到`1,2,3`,这很垃圾.这个答案只是将同一个调用写入同一个破坏的本机字符串方法的更糟糕的方法.42支票? (8认同)
  • 你也可以加入一个像'''星期日','星期一','星期二','星期三','星期四'这样的数组.join('');` (8认同)
  • 它只适用于您希望每个项目用逗号分隔的情况 (7认同)
  • 我建议使用A.toString(),以便更清楚你在做什么. (7认同)
  • 这似乎是在作弊......但它确实有效!:) (5认同)
  • `Array.join()` 绝对是最好的选择,因为它不会简单地用逗号连接值,而是允许用户确定如何进行连接。例如,您可以使用逗号+空格。 (3认同)

Jus*_*tin 101

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

var array = ['a', 'b', 'c'];
array.toString(); // result: a,b,c
Run Code Online (Sandbox Code Playgroud)

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

  • 我只是希望将数组翻译成一个字符串,然后让我使用正则表达式来修剪掉脂肪,但这就好了哦!谢谢贾斯汀. (3认同)

Nic*_*las 48

不确定这是否是你想要的但是

var arr = [A, B, C];
var arrString = arr.join(", ");
Run Code Online (Sandbox Code Playgroud)

这导致以下输出:

A,B,C


VIJ*_*Y P 36

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

强制转换为字符串

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

var arr = ['a', 'b', 'c'] + '';  // "a,b,c"
Run Code Online (Sandbox Code Playgroud)

调用 .toString()

var arr = ['a', 'b', 'c'].toString();  // "a,b,c"
Run Code Online (Sandbox Code Playgroud)

明确加入使用 .join()

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

var arr = ['a', 'b', 'c'].join(',');  // "a,b,c"
Run Code Online (Sandbox Code Playgroud)

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

var arr = ['a', 'b', 'c'].join(', ');  // "a, b, c"
Run Code Online (Sandbox Code Playgroud)

运用 JSON.stringify()

这更干净,因为它引用了数组中的字符串并正确处理嵌套数组.

var arr = JSON.stringify(['a', 'b', 'c']);  // '["a","b","c"]'
Run Code Online (Sandbox Code Playgroud)


Fel*_*ing 16

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

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

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(', ');
Run Code Online (Sandbox Code Playgroud)

Δ:它只使用返回值是否应继续循环元素.返回"falsy"值将停止循环.


Dee*_*ath 14

使用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);
Run Code Online (Sandbox Code Playgroud)