normalizeIndices
Normalize a list of indices to the interval
[0,max]
.
Usage
var normalizeIndices = require( '@stdlib/ndarray/base/normalize-indices' );
normalizeIndices( indices, max )
Normalizes a list of indices to the interval [0,max]
.
var idx = normalizeIndices( [ 2, -5 ], 10 );
// returns [ 2, 6 ]
If provided an out-of-bounds index, the function returns null
.
var idx = normalizeIndices( [ 15, -15 ], 10 );
// returns null
Notes
- The function mutates the input array, even when provided an out-of-bounds index. If mutation is undesired, copy the input array before calling this function.
- During normalization, a negative index is converted to a nonnegative index according to
max + idx + 1
. If, after normalization, the resolved index is still negative, the value is considered out-of-bounds.
Examples
var discreteUniform = require( '@stdlib/random/array/discrete-uniform' );
var normalizeIndices = require( '@stdlib/ndarray/base/normalize-indices' );
// Generate a list of random indices:
var idx1 = discreteUniform( 100, -20, 20, {
'dtype': 'generic'
});
// Normalize each index to the interval `[0, 15]`:
var idx2 = idx1.slice();
var out = normalizeIndices( idx2, 15 );
// Check whether one or more indices was invalid:
if ( out === null ) {
console.log( 'One or more indices was invalid.' );
}
// Print the results...
var i;
for ( i = 0; i < idx1.length; i++ ) {
console.log( '%d => [%d, %d] => %d', idx1[ i ], 0, 15, idx2[ i ] );
}