2016-11-24 11 views
0

目前我做的Immutable.js,如何戒菸的第一個搜索找到

var adnetCustomerModel = customersList.find((adnetCustomerModel) => { 
      return adnetCustomerModel.getId() == customerId; 
}) 

但浪費CPU週期,因爲我要繼續遍歷整個列表(或因此我假設這是發生了什麼)。

我想退出第一次查找。 現在我知道我可以做一個過濾器()。first()(我相信它會有相同的CPU週期浪費),但有沒有更好的方法?

如果這是一個正常的for循環,我只會打破... 將返回在immutable.js中實現相同的效果?

TX閱讀,

肖恩

+1

該文檔聲明它返回找到的第一個值 - 您認爲它會在第一個找到的估值器之後繼續迭代嗎? –

+0

偉大的我錯過了在文檔中,TX確認...! +1 – born2net

回答

1

不可改變的find()已經返回僅適用於謂詞返回true的第一個值。它實際上只是環繞的findEntry()方法是這樣的實現:

findEntry(predicate, context, notSetValue) { 
    var found = notSetValue; 
    this.__iterate((v, k, c) => { 
     if (predicate.call(context, v, k, c)) { 
     found = [k, v]; 
     return false; 
     } 
    }); 
    return found; 
    } 

所以,你不浪費任何週期。 :)

Vanilla JavaScript Array.prototype.find()也返回匹配謂詞的第一個元素的值。

+0

偉大的我錯過了在文檔中,TX確認...! +1 – born2net

相關問題