Immutable.js,如何在第一次查找时退出搜索

时间:2016-11-24 00:23:39

标签: immutable.js

目前我在做

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

但浪费CPU周期,因为我必须继续并遍历整个列表(或者我假设发生了这种情况)。

我想在第一次找到时退出。 现在我知道我可以做一个filter()。first()(我认为它会浪费相同的CPU周期)但是有更好的方法吗?

如果这是一个正常的for循环,我会打破...... 返回会在immutable.js中实现相同的效果吗?

tx用于阅读,

肖恩

1 个答案:

答案 0 :(得分:1)

Immutable的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()还返回与谓词匹配的第一个元素的值。