function resolveSubscripts( str, shape, strict ) {
	var ndims;
	var out;
	var idx;
	var i;

	ndims = shape.length;

	// TODO: add support for serialized CartesianIndex instances: 'CartesianIndex(i,j,k)' => str2cartesian (similar to str2slice)

	out = str.split( /\s*,\s*/ );
	if ( out.length !== ndims ) {
		throw new RangeError( format( 'invalid operation. Number of indices does not match the number of array dimensions. Array shape: (%s). Index dimensions: %u.', shape.join( ',' ), out.length ) );
	}
	// Normalize each subscript...
	for ( i = 0; i < ndims; i++ ) {
		idx = resolveIndex( out[ i ], shape[ i ], strict );
		if ( idx === -1 ) {
			// In non-strict mode, match normal object behavior by returning `undefined` for undefined/non-existent properties...
			return;
		}
		out[ i ] = idx;
	}
	return out;
}
Resolves a list of subscripts from a serialized string of Cartesian indices.

## Notes

-   In non-strict mode, if provided an out-of-bounds subscript, the function returns `undefined`.

@private
@param {string} str - Cartesian indices string
@param {NonNegativeIntegerArray} shape - dimensions
@param {boolean} strict - boolean indicating whether to enforce strict bounds checking
@throws {RangeError} index exceeds ndarray bounds
@throws {RangeError} number of indices must match the number of ndarray dimensions
@returns {(NonNegativeIntegerArray|void)} result