Prototype - 枚举



Enumerable 类提供了一组用于枚举的有用方法。枚举是充当值集合的对象。

枚举方法主要用于枚举数组哈希表。还有其他对象,例如ObjectRange和各种 DOM 或 AJAX 相关对象,您可以在其中使用枚举方法。

上下文参数

Enumerable 的每个采用迭代器的的方法也采用上下文对象作为下一个(可选)参数。上下文对象是迭代器将绑定到的对象,因此其中的this关键字将指向该对象。

var myObject = {};

['foo', 'bar', 'baz'].each(function(name, index) {
   this[name] = index;
}, myObject); // we have specified the context

myObject;

这将产生以下结果:

输出

{ foo: 0, bar: 1, baz: 2}

高效使用

  • 当您需要对所有元素调用相同的方法时,请使用invoke()方法。

  • 当您需要获取所有元素的相同属性时,请使用pluck()方法。

  • findAll/select方法检索与给定谓词匹配的所有元素。相反,reject()方法检索不与谓词匹配的所有元素。在您需要这两个集合的特定情况下,您可以避免两次循环:只需使用partition()方法。

以下是与 Enumerable 相关的所有方法的完整列表。

Prototype Enumerable 方法

注意 - 请确保您至少拥有 prototype.js 1.6 版。

序号 方法和描述
1. all()

确定所有元素是否与 true 布尔等效,可以直接或通过提供的迭代器计算。

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 中。别名为 member()。

13. inject()

基于迭代器的连续结果递增地构建结果值。

14. invoke()

针对 each() 或 collect() 的常见用例的优化:对所有元素调用相同的方法,并使用相同的潜在参数。

15. map()

返回将迭代器应用于每个元素的结果。collect() 的便捷别名。

16. max()

返回最大元素(或基于元素的计算),如果枚举为空则返回 undefined。元素可以直接比较,或者首先应用迭代器并比较返回的值。

17. member()

基于 == 比较运算符确定给定对象是否在 Enumerable 中。include() 的便捷别名。

18. min()

返回最小元素(或基于元素的计算),如果枚举为空则返回 undefined。元素可以直接比较,或者首先应用迭代器并比较返回的值。

19. partition()

将元素划分为两组:视为 true 的元素和视为 false 的元素。

20. pluck()

针对 collect() 的常见用例的优化:为所有元素获取相同的属性。返回属性值。

21. reject()

返回迭代器返回 false 的所有元素。

22. select()

findAll() 方法的别名。

23. size()

返回枚举的大小。

24. sortBy()

基于为每个元素计算的标准提供元素的自定义排序视图。

25. toArray()

返回枚举的数组表示形式。别名为 entries()。

26. zip()

将 2 个或多个序列压缩在一起(想想裤子上的拉链),提供一个元组数组。每个元组包含每个原始序列中的一个值。

广告