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 个 + 序列拉在一起(想象一下裤子上的拉链),提供一个元组数组。每个元组包含每个原始序列的一个值。 |