相当于jQuery的Prototype收集和映射函数
jQuery equivalent to Prototype collect and map functions?
jQuery是否提供了一个等效的迭代器函数来"收集"answers"映射"Prototype?以下函数返回对每个元素应用迭代器的结果:http://www.prototypejs.org/api/enumerable/collect
谢谢!
有"map()"但没有"reduce()"或"collect()"。jQuery开发人员有一段抵制添加"reduce()"的历史,因为对jQuery核心代码本身没有明显的好处。
你可以从function .js库中获取和扩展函数的简单实现。
另外,需要注意的是,jQuery"map"功能有一些有问题的特性,这些特性有时很方便,但在其他时候却很麻烦。具体来说,传递给"map()"的回调函数返回结果数组的值,正如您所期望的那样。但是有两种特殊情况:
- 如果函数返回
null
或undefined
,则不添加到结果数组;换句话说,它被解释为跳过该元素的请求。这使得很难有一个显式null
条目的结果数组。 - 如果函数返回一个数组,那么该数组将被插入到结果数组中。换句话说,如果函数返回一个包含10个元素的数组,那么结果数组(即调用"map()"最终返回的数组)将增加10个新元素,而不是增加一个值为包含10个元素的数组元素。
这两种零食有时都很方便,但在花了半天时间发现第二种(是的,有记录)之后,我有了一些痛苦的回忆:-)
对应的jQuery是.map()
(参见文档)
如果在Prototype中你有:
['Hitch', "Hiker's", 'Guide', 'To', 'The', 'Galaxy'].collect(function(s) {
return s.charAt(0).toUpperCase();
}).join(''); // -> 'HHGTTG'
只需将collect
替换为map
(或者如果已经使用map
,则不需要更改任何内容!):
['Hitch', "Hiker's", 'Guide', 'To', 'The', 'Galaxy'].map(function(s) {
return s.charAt(0).toUpperCase();
}).join(''); // -> 'HHGTTG'
相关文章:
- 如何运行对象映射函数
- 角度和内置的javascript映射函数
- 将值传递给映射函数-CouchDB
- 接受多个数组作为参数的javascript映射函数
- JavaScript继承构造函数.prototype
- CouchDB-映射函数中的变量
- 如何使用数组和映射函数构建 JavaScript 对象
- 任何转换对象*值*的Javascript或Coffeescript“映射”函数
- 映射函数反应中的错误
- 如何获取要在 lodash 映射函数中用作变量的键
- JavaScript 数组映射函数不会更改字符串中的元素
- 如果在映射函数中 reactjs 元素的内部循环
- 带有拼接的javascript中的映射函数
- JavaScript'有Ruby等价物吗;s函数.prototype.bind
- 是否可以将映射集合名称的名称作为MongoDB映射函数中键的一部分
- 对象和数组通过映射函数合并
- 带有Jquery映射函数的复选框
- 将参数传递到CouchDb中的映射函数
- 如何正确映射函数构造函数
- 相当于jQuery的Prototype收集和映射函数