_baseSlice.js (756B)
1 /** 2 * The base implementation of `_.slice` without an iteratee call guard. 3 * 4 * @private 5 * @param {Array} array The array to slice. 6 * @param {number} [start=0] The start position. 7 * @param {number} [end=array.length] The end position. 8 * @returns {Array} Returns the slice of `array`. 9 */ 10 function baseSlice(array, start, end) { 11 var index = -1, 12 length = array.length; 13 14 if (start < 0) { 15 start = -start > length ? 0 : (length + start); 16 } 17 end = end > length ? length : end; 18 if (end < 0) { 19 end += length; 20 } 21 length = start > end ? 0 : ((end - start) >>> 0); 22 start >>>= 0; 23 24 var result = Array(length); 25 while (++index < length) { 26 result[index] = array[index + start]; 27 } 28 return result; 29 } 30 31 module.exports = baseSlice;