code: function nanprod( arr, clbk ) {
  	if ( !isArray( arr ) ) {
  		throw new TypeError( 'nanprod()::invalid input argument. Must provide an array. Value: `' + arr + '`.' );
  	}
  	if ( arguments.length > 1 ) {
  		if ( typeof clbk !== 'function' ) {
  			throw new TypeError( 'nanprod()::invalid input argument. Accessor must be a function. Value: `' + clbk + '`.' );
  		}
  	}
  	var len = arr.length,
  		flg = false,
  		p = 1,
  		val,
  		i;
  
  	if ( !len ) {
  		return null;
  	}
  	if ( clbk ) {
  		for ( i = 0; i < len; i++ ) {
  			val = clbk( arr[ i ] );
  			if ( !isNumber( val ) ) {
  				continue;
  			} else {
  				flg = true;
  			}
  			if ( val === 0 ) {
  				return 0;
  			}
  			p *= val;
  		}
  	} else {
  		for ( i = 0; i < len; i++ ) {
  			val = arr[ i ];
  			if ( !isNumber( val ) ) {
  				continue;
  			} else {
  				flg = true;
  			}
  			if ( val === 0 ) {
  				return 0;
  			}
  			p *= val;
  		}
  	}
  	return ( flg ) ? p : NaN;
  }
docs: NANPROD // 
  FUNCTION: nanprod( arr[, accessor] )
  Computes the product of an array ignoring any non-numeric values.
  
  @param {Array} arr - array of values
  @param {Function} [accessor] - accessor function for accessing array values
  @returns {Number|Null} product