slice.js 871 B

123456789101112131415161718192021222324252627282930
  1. var baseSlice = require('../internal/baseSlice'),
  2. isIterateeCall = require('../internal/isIterateeCall');
  3. /**
  4. * Creates a slice of `array` from `start` up to, but not including, `end`.
  5. *
  6. * **Note:** This method is used instead of `Array#slice` to support node
  7. * lists in IE < 9 and to ensure dense arrays are returned.
  8. *
  9. * @static
  10. * @memberOf _
  11. * @category Array
  12. * @param {Array} array The array to slice.
  13. * @param {number} [start=0] The start position.
  14. * @param {number} [end=array.length] The end position.
  15. * @returns {Array} Returns the slice of `array`.
  16. */
  17. function slice(array, start, end) {
  18. var length = array ? array.length : 0;
  19. if (!length) {
  20. return [];
  21. }
  22. if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {
  23. start = 0;
  24. end = length;
  25. }
  26. return baseSlice(array, start, end);
  27. }
  28. module.exports = slice;