Enumerable类为枚举提供了大量有用的方法.枚举是充当值集合的对象.
枚举方法主要用于枚举数组和哈希.还有其他对象,如 ObjectRange 和各种与DOM或AJAX相关的对象,您可以使用枚举方法.
上下文参数
采用迭代器的每个Enumerable方法也将上下文对象作为下一个(可选)参数.上下文对象是迭代器将绑定到的对象,因此其中的 this 关键字将指向该对象.
var myObject = {};['foo', 'bar', 'baz'].each(function(name, index) { this[name] = index;}, myObject); // we have specified the contextmyObject;
这将产生以下结果 :
输出
{foo:0,bar:1,baz:2}
高效使用
当您需要在所有元素上调用相同的方法时,请使用 invoke()方法.
当您需要在所有元素上获取相同的属性时,请使用 pluck()方法.
findAll/select 方法检索与给定谓词匹配的所有元素.相反, reject()方法检索与谓词不匹配的所有元素.在需要两个集合的特定情况下,可以避免循环两次:只需使用 partition()方法.
以下是与Enumerable相关的所有方法的完整列表.
Prototype Enumerable Methods
注意 去;确保你至少拥有prototype.js的1.6版.
S.No. | Method&说明 |
---|---|
1. | all() 直接或通过提供的迭代器计算确定所有元素是否都是布尔等效于true./p> |
2. | any() 直接或通过提供的计算确定是否至少有一个元素是布尔等效于true的元素迭代器. |
3. | collect() 返回将迭代器应用于每个元素的结果.别名为map(). |
4. | detect() 查找迭代器返回true的第一个元素.由find()方法别名. |
5. | each() 它允许您以通用方式迭代所有元素,然后返回Enumerable,从而允许进行链式调用. |
6. | eachSlice() 基于给定的块分组项目大小,最后一个块可能更小. |
7. | entries() 更通用的toArray方法的别名. |
8. | find() 查找迭代器返回true的第一个元素. detect()的便利别名. |
9. | findAll() 返回迭代器返回true的所有元素.别名为select(). |
10. | grep() 返回与过滤器匹配的所有元素.如果提供了迭代器,它将用于为每个选定元素生成返回值. |
11. | inGroupsOf() 群组固定大小的块中的项目,如果需要,使用特定值填充最后一个块. |
12. | include() 根据==比较运算符确定给定对象是否在Enumerable中.别名为成员(). |
13. | inject() 根据迭代器的连续结果逐步构建结果值. |
14. | invoke() 优化每个()或collect()的常见用例:调用相同的方法,具有相同的潜在参数,用于所有元素. |
15. | map() 返回应用迭代器的结果每个元素. collect()的便利别名. |
16. | max() 返回最大元素(或基于元素的计算),或者如果枚举为空,则为undefined.元素要么直接比较,要么首先应用迭代器并比较返回值. |
17. | member() 确定是否给定对象是否在Enumerable中,基于==比较运算符.包含()的便利别名. |
18. | min() 返回最小元素(或基于元素的计算),或者如果枚举为空,则为undefined.元素要么直接比较,要么首先应用迭代器并比较返回值. |
19. | partition() 对元素进行分区分为两组:那些被认为是真的,那些被认为是假的. |
20 . | pluck() 常用的优化 - collect()的情况:为所有元素获取相同的属性.返回属性值. |
21. | reject() 返回迭代器返回false的所有元素. |
22. | select() findAll()方法的别名. |
23. | size() 返回枚举的大小. |
24. | sortBy() 根据迭代器为每个元素计算的条件,提供元素的自定义排序视图. |
25. | toArray() 返回枚举的Array表示形式.别名为条目(). |
26. | zip() 拉链(想想一条裤子上的拉链)2 &加;序列,提供一组元组.每个元组包含每个原始序列的一个值. |