code: function(this_, value, getter_, offset){
        this_.lastSearchIndex = -1;
        getter_ = getter(getter_ || $self);
  
        for (var index = parseInt(offset, 10) || 0, len = this_.length; index < len; index++)
          if (getter_(this_[index]) === value)
            return this_[this_.lastSearchIndex = index];
      }
docs: search 
  Returns first item where getter(item) === value
  @example
  var list = [{ a: 1, b: 2 }, { a: 2, b: 3 }, { a: 1, b: 4}, { a: 5 }];
  
  // search for item where object.a == 2
  var result = list.search(5, 'a');
  // result -> { a: 5 }
  
  // search for where a == 1 && b > 2
  var result = list.search(true, function(object){ return object.a == 1 && object.b > 2 });
  // result -> { a: 1, b: 3 }
  
  // search all items where a == 1
  var result = new Array();
  var item = list.search(1, 'a');
  while (item)
  {
  result.push(item)
  item = list.search(1, 'a', list.lastSearchIndex + 1);
  // lastSearchIndex store index of last founded item
  }
  // result -> [{ a: 1, b: 2 }, { a: 1, b: 4}]
  
  // but if you need all items of array with filtered by condition use Array#filter method instead
  var result = list.filter(basis.getter('a == 1'));
  
  @param {Array} this_
  @param {*} value
  @param {function(object)|string} getter_
  @param {number=} offset
  @return {*}