all files / src/Array/ slice.js

82.35% Statements 14/17
50% Branches 9/18
100% Functions 1/1
82.35% Lines 14/17
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36                                           
/**
 * Creates a slice of `array` from `start` up to,but not including,`end`
 * @since 1.0.0
 * @param {Array} [array] The array to slice
 * @param {number} [start=0] The start position. A negative index will be treated as an offset from the end
 * @param {number} [end=array.length] The end position. A negative index will be treated as an offset from the end
 * @returns {Array} Returns the slice of `array`
*/
function slice(array,start,end){
  let length = array == null ? 0 : array.length
  Iif (!length) {
    return []
  }
  start = start == null ? 0 : start
  end = end === undefined ? length : end
 
  Iif (start < 0) {
    start = -start > length ? 0 : (length + start)
  }
  end = end > length ? length : end
  Iif (end < 0) {
    end += length
  }
  length = start > end ? 0 : ((end - start) >>> 0)
  start >>>= 0
 
  let index = -1
  const result = new Array(length)
  while (++index < length) {
    result[index] = array[index + start]
  }
  return result
}
 
export default slice