function filled2dBy( shape, clbk, thisArg ) {
	var arr;
	var a0;
	var S0;
	var S1;
	var i;
	var j;

	S0 = shape[ 1 ];
	S1 = shape[ 0 ];

	// Manually push elements in order to ensure "fast" elements...
	arr = [];
	for ( i = 0; i < S1; i++ ) {
		a0 = [];
		for ( j = 0; j < S0; j++ ) {
			a0.push( clbk.call( thisArg, [ i, j ] ) );
		}
		arr.push( a0 );
	}
	return arr;
}
Returns a filled two-dimensional nested array according to a provided callback function.

@param {NonNegativeIntegerArray} shape - array shape
@param {Callback} clbk - callback function
@param {*} [thisArg] - callback function execution context
@returns {Array} filled array

@example
var constantFunction = require( '@stdlib/utils/constant-function' );

var out = filled2dBy( [ 1, 3 ], constantFunction( 'beep' ) );
// returns [ [ 'beep', 'beep', 'beep' ] ]