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 ] );
}
Did you find this page helpful?