Prototype - 枚举

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

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

上下文参数

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

var myObject = {};

['foo', 'bar', 'baz'].each(function(name, index) {
   this[name] = index;
}, myObject); // 我们已经指定了上下文

myObject;

这将产生以下结果 −

输出

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

高效使用

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

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

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

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

Prototype 可枚举方法

注意 − 确保您至少拥有 1.6 版的prototype.js。

S.No. 方法 &描述
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()

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

17. member()

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

18. min()

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

19. partition()

将元素分成两组:一组被视为真,一组被视为假。

20. pluck()

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

21. reject()

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

22. select()

findAll() 方法的别名。

23. size()

返回枚举。

24. sortBy()

根据迭代器为每个元素计算的标准,提供元素的自定义排序视图。

25. toArray()

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

26. zip()

将 2 个 + 序列拉在一起(想象一下裤子上的拉链),提供一个元组数组。每个元组包含每个原始序列的一个值。