node-vitals
Version:
Do more with less. A simple, high-performing, functional JavaScript library.
57 lines (49 loc) • 1.3 kB
JavaScript
/**
* -----------------------------------------------------------------------------
* VITALS UNIT TESTS HELPER: sliceArr
* -----------------------------------------------------------------------------
* @author Adam Smith <adam@imaginate.life> (https://github.com/imaginate)
* @copyright 2017 Adam A Smith <adam@imaginate.life> (https://github.com/imaginate)
*
* Annotations:
* @see [JSDoc3](http://usejsdoc.org)
* @see [Closure Compiler JSDoc Syntax](https://developers.google.com/closure/compiler/docs/js-for-compiler)
*/
;
module.exports = sliceArr;
/**
* @param {(!Object|function)} source
* @param {number=} start - [default= 0]
* @param {number=} end - [default= source.length]
* @return {!Array}
*/
function sliceArr(source, start, end) {
/** @type {!Array} */
var arr;
/** @type {number} */
var len;
/** @type {number} */
var ii;
/** @type {number} */
var i;
len = source.length;
start = start
? start < 0
? len + start
: start
: 0;
start = start < 0 ? 0 : start;
end = end === undefined || end > len
? len
: end < 0
? len + end
: end;
if (start >= end) return [];
arr = new Array(end - start);
ii = start - 1;
i = 0;
while (++ii < end) {
arr[i++] = source[ii];
}
return arr;
}