function every2d( x, predicate, thisArg ) {
	var xbuf;
	var idx;
	var dx0;
	var dx1;
	var sh;
	var S0;
	var S1;
	var sx;
	var ix;
	var i0;
	var i1;

	// Note on variable naming convention: S#, dx#, i# where # corresponds to the loop number, with `0` being the innermost loop...

	// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...
	sh = x.shape;
	sx = x.strides;
	idx = zeroTo( sh.length );
	if ( strides2order( sx ) === 1 ) {
		// For row-major ndarrays, the last dimensions have the fastest changing indices...
		S0 = sh[ 1 ];
		S1 = sh[ 0 ];
		dx0 = sx[ 1 ];                // offset increment for innermost loop
		dx1 = sx[ 0 ] - ( S0*sx[1] ); // offset increment for outermost loop
	} else { // order === 'column-major'
		// For column-major ndarrays, the first dimensions have the fastest changing indices...
		S0 = sh[ 0 ];
		S1 = sh[ 1 ];
		dx0 = sx[ 0 ];                // offset increment for innermost loop
		dx1 = sx[ 1 ] - ( S0*sx[0] ); // offset increment for outermost loop
		idx = reverse( idx );
	}
	// Set a pointer to the first indexed element:
	ix = x.offset;

	// Cache a reference to the input ndarray buffer:
	xbuf = x.data;

	// Iterate over the ndarray dimensions...
	for ( i1 = 0; i1 < S1; i1++ ) {
		for ( i0 = 0; i0 < S0; i0++ ) {
			if ( !predicate.call( thisArg, xbuf[ ix ], take( [ i1, i0 ], idx ), x.ref ) ) { // eslint-disable-line max-len
				return false;
			}
			ix += dx0;
		}
		ix += dx1;
	}
	return true;
}
Tests whether all elements in an ndarray pass a test implemented by a predicate function.

@private
@param {Object} x - object containing ndarray meta data
@param {ndarrayLike} x.ref - reference to the original ndarray-like object
@param {string} x.dtype - data type
@param {Collection} x.data - data buffer
@param {NonNegativeIntegerArray} x.shape - dimensions
@param {IntegerArray} x.strides - stride lengths
@param {NonNegativeInteger} x.offset - index offset
@param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)
@param {Function} predicate - predicate function
@param {*} thisArg - predicate function execution context
@returns {boolean} boolean indicating whether all elements pass a test

@example
var Float64Array = require( '@stdlib/array/float64' );

function predicate( value ) {
   return value > 0.0;
}

// Create a data buffer:
var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );

// Define the shape of the input array:
var shape = [ 2, 2 ];

// Define the array strides:
var sx = [ 4, 1 ];

// Define the index offset:
var ox = 1;

// Create the input ndarray-like object:
var x = {
    'ref': null,
    'dtype': 'float64',
    'data': xbuf,
    'shape': shape,
    'strides': sx,
    'offset': ox,
    'order': 'row-major'
};

// Test elements:
var out = every2d( x, predicate );
// returns true