function InnerArrayFilter(f, receiver, array, length, result) {
  var result_length = 0;
  for (var i = 0; i < length; i++) {
    if (i in array) {
      var element = array[i];
      if (%_Call(f, receiver, element, i, array)) {
        %CreateDataProperty(result, result_length, element);
        result_length++;
      }
    }
  }
  return result;
}
function InnerArrayFilter(f, receiver, array, length, result) {
  var result_length = 0;
  for (var i = 0; i < length; i++) {
    if (i in array) {
      var element = array[i];
      if (%_Call(f, receiver, element, i, array)) {
        %CreateDataProperty(result, result_length, element);
        result_length++;
      }
    }
  }
  return result;
}
function InnerArrayFilter ( f , receiver , array , length , result ) { var result_length = 0 ; for ( var i = 0 ; i < length ; i ++ ) { if ( i in array ) { var element = array [ i ] ; if ( % _Call ( f , receiver , element , i , array ) ) { % CreateDataProperty ( result , result_length , element ) ; result_length ++ ; } } } return result ; }
The following functions cannot be made efficient on sparse arrays while preserving the semantics, since the calls to the receiver function can add or delete elements from the array.
The following functions cannot be made efficient on sparse arrays while preserving the semantics since the calls to the receiver function can add or delete elements from the array .