function(f, index, loop) {
      var result = [];
      arrayEach(this, function(el, i, arr) {
        if(multiMatch(el, f, arr, [el, i, arr])) {
          result.push(el);
        }
      }, index, loop);
      return result;
    }
function(f, index, loop) {
      var result = [];
      arrayEach(this, function(el, i, arr) {
        if(multiMatch(el, f, arr, [el, i, arr])) {
          result.push(el);
        }
      }, index, loop);
      return result;
    }
function ( f , index , loop ) { var result = [ ] ; arrayEach ( this , function ( el , i , arr ) { if ( multiMatch ( el , f , arr , [ el , i , arr ] ) ) { result . push ( el ) ; } } , index , loop ) ; return result ; }
*
@method findAll(<f>, [index] = 0, [loop] = false)
@returns Array
@short Returns all elements that match <f>.
@extra <f> will match a string, number, array, object, or alternately test against a function or regex. Starts at [index], and will continue once from index = 0 if [loop] is true. This method implements @array_matching.
@example

+   [{a:1,b:2},{a:1,b:3},{a:2,b:4}].findAll(function(n) {
return n['a'] == 1;
});                                        -> [{a:1,b:3},{a:1,b:4}]
['cuba','japan','canada'].findAll(/^c/)    -> 'cuba','canada'
['cuba','japan','canada'].findAll(/^c/, 2) -> 'canada'

*
* @method findAll ( <f > [ index ] = 0 [ loop ] = false ) @returns Array @short Returns all elements that match <f > . @extra <f > will match a string number array object or alternately test against a function or regex . Starts at [ index ] and will continue once from index = 0 if [ loop ] is true . This method implements @array_matching . @example