time-to-botec

Benchmark sampling in different programming languages
Log | Files | Refs | README

_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;