Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.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 为什么jQuery映射会自动展平返回的数组?_Javascript_Jquery - Fatal编程技术网

Javascript 为什么jQuery映射会自动展平返回的数组?

Javascript 为什么jQuery映射会自动展平返回的数组?,javascript,jquery,Javascript,Jquery,我是javascript和jQuery的新手。 我使用Scala和Python等支持列表理解和映射函数的语言,所以我在jQuery($.Map(array,func))中尝试了映射函数 我认为Map函数的一个基本规则是输出的长度应该与输入的长度相同。然而,当我尝试这一点时: $.map([1,2,3], function(e){return [1,2,3]}) 我得到 [1, 2, 3, 1, 2, 3, 1, 2, 3] 而不是 [[1, 2, 3], [1, 2, 3], [1, 2,

我是javascript和jQuery的新手。 我使用Scala和Python等支持列表理解和映射函数的语言,所以我在jQuery($.Map(array,func))中尝试了映射函数

我认为Map函数的一个基本规则是输出的长度应该与输入的长度相同。然而,当我尝试这一点时:

$.map([1,2,3], function(e){return [1,2,3]})
我得到

[1, 2, 3, 1, 2, 3, 1, 2, 3]
而不是

[[1, 2, 3], [1, 2, 3], [1, 2, 3]]
我觉得这很奇怪


有人能解释一下吗?谢谢。

查看
jQuery.map 2.1.1
的代码,实际上有一条指令用于展平返回的数组

    // Flatten any nested arrays
    return concat.apply( [], ret );
结果就是这样。 jQuery文档还提到了这一点:

 A returned array will be flattened into the resulting array.
但是,没有解释为什么要执行此展平

顺便说一句,这与webkit上的ECMAScript 5
map
在行为上产生了显著的差异,其中

[1,2,3].map(function(e){return [1,2,3]})
返回

[[1, 2, 3], [1, 2, 3], [1, 2, 3]]

ECMAScript 5在浏览器上的支持是可用的,并且对
Array.prototype.map
的支持总体上是非常好的

这是设计的,上面提到了它,有时它非常有用。这很酷!因此,基本上我可以使用数组的函数而不是jQuery的oneYes,但在支持ECMAScript 5的浏览器上,只需检查这一点