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 個或多個序列壓縮在一起(想想褲子上的拉鍊),提供一個元組陣列。每個元組包含每個原始序列中的一個值。

廣告
© . All rights reserved.