normalizeSlice
Normalize a
Slice
object.
Usage
var normalizeSlice = require( '@stdlib/slice/base/normalize-slice' );
normalizeSlice( slice, len, strict )
Normalizes a Slice
object, where len
specifies the maximum number of elements allowed in the slice.
var Slice = require( '@stdlib/slice/ctor' );
var s = normalizeSlice( new Slice( -1, null, -1 ), 10, false );
// returns <Slice>
var v = s.start;
// returns 9
v = s.stop;
// returns null
v = s.step;
// returns -1
When strict
is true
, the function returns an error object if an input slice exceeds index bounds.
var Slice = require( '@stdlib/slice/ctor' );
var s = normalizeSlice( new Slice( -20, 20, 1 ), 10, true );
// returns { 'code': 'ERR_SLICE_OUT_OF_BOUNDS' }
A returned error object may have one of the following error codes:
- ERR_SLICE_OUT_OF_BOUNDS: a slice exceeds index bounds.
Examples
var Slice = require( '@stdlib/slice/ctor' );
var normalizeSlice = require( '@stdlib/slice/base/normalize-slice' );
var s = normalizeSlice( new Slice(), 5, false );
console.log( 'start: %s. stop: %s. step: %s.', s.start, s.stop, s.step );
// => 'start: 0. stop: 5. step: 1.'
s = normalizeSlice( new Slice( 1, 4, 2 ), 5, false );
console.log( 'start: %s. stop: %s. step: %s.', s.start, s.stop, s.step );
// => 'start: 1. stop: 4. step: 2.'
s = normalizeSlice( new Slice( -1, null, -1 ), 5, false );
console.log( 'start: %s. stop: %s. step: %s.', s.start, s.stop, s.step );
// => 'start: 4. stop: null. step: -1.'
s = normalizeSlice( new Slice( -10, -2, 2 ), 5, false );
console.log( 'start: %s. stop: %s. step: %s.', s.start, s.stop, s.step );
// => 'start: 0. stop: 3. step: 2.'
s = normalizeSlice( new Slice( 1, 20, 2 ), 5, false );
console.log( 'start: %s. stop: %s. step: %s.', s.start, s.stop, s.step );
// => 'start: 1. stop: 5. step: 2.'