为什么jQuery map会自动将返回的数组平面化
Why jQuery map automatically flattened the returned Array?
我是javascript和jQuery的新手。我使用像Scala和Python这样的语言来支持列表推导和Map函数,所以我尝试了jQuery中的Map函数。地图(数组、函数))。
我认为Map函数的一个基本规则是输出的长度应该与输入的长度相同。然而,当我尝试这个:
$.map([1,2,3], function(e){return [1,2,3]})
I got
[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
的支持是非常好的整体
相关文章:
- Regex提取URL返回数组的一部分;未定义”;
- 为循环嵌套的Javascript未按预期返回数组
- 从函数中的函数返回数组时出错
- JSON返回数组的奇怪结果
- 如何从NodeJS中的模块返回数组
- 在JS中返回数组的大整数运算
- 从Nodejs中的函数返回数组,并将其发送到ejs视图
- 从函数返回数组
- undercore返回数组中对象的indes,其中单词存在于对象中的句子中
- Yui Get 复选框返回数组而不是布尔值
- 从异步调用返回数组,然后为数组的每个元素返回其他异步调用
- JavaScript闭包和返回数组元素
- 按流星空格键模板中的索引返回数组项
- 从多个文件中推送文本的函数(使用html5文件读取器上传)返回数组
- 我想返回数组
- PHP和Ajax在回调和返回数组中使用foreach循环
- Javascript-如何通过以字符串作为参数返回数组
- 从JSON调用SQL返回数组时出现问题
- Jasmine spyOn使用伪造的返回数组测试功能
- 无法从从sql数据库读取的javascript函数中获取返回数组