Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript array.map在串接成字符串时自动附加逗号?_Javascript_Arrays_String - Fatal编程技术网

Javascript array.map在串接成字符串时自动附加逗号?

Javascript array.map在串接成字符串时自动附加逗号?,javascript,arrays,string,Javascript,Arrays,String,我对Array.map函数的行为感到有点困惑: var arr = ['one', 'two', 'three']; var result = ''; result += arr.map(function(elm) { return elm; }); // 'one,two,three' 它如何自动将返回的结果与, 注意:只有将返回的结果串联成字符串时才会发生这种情况。逗号来自数组的toString()方法,而不是map()函数 var arr = ['one', 'two', 't

我对
Array.map
函数的行为感到有点困惑:

var arr = ['one', 'two', 'three'];
var result = '';
result += arr.map(function(elm) {
    return elm;
});

// 'one,two,three'
它如何自动将返回的结果与


注意:只有将返回的结果串联成字符串时才会发生这种情况。

逗号来自
数组的
toString()
方法,而不是
map()
函数

var arr = ['one', 'two', 'three'];

arr.toString(); // 'one,two,three'

var result = '';
result += arr.map(function(elm) {
    return elm;
});

result.toString(); // 'one,two,three'

数组。map
对数组没有任何影响

你基本上做到了

'' + ['one', 'two', 'three']
它调用数组的
toString()
方法,其默认行为是
join(',')
数组

var arr = ['one', 'two', 'three'];
var result = '';
var r = arr.map(function(elm) {
    result = result + ' ' + elm;
    return elm;
});
alert('r-> ' + r);
alert('result-> ' + result);
这是因为arr.map函数在处理数组中的每个元素后返回,而不是针对单个元素返回,因为您希望附加到“result”变量。如果希望将值连接到“result”变量,则应该在每个元素的map函数中进行连接。正如Sirko所说,逗号来自toString()方法。 在JSFIDLE上检查上述代码:

对Array.map()的引用:

。。。这是一个非常优雅的解决方案