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.'
Did you find this page helpful?