isArrayLike.js 875 B

12345678910111213141516171819202122232425262728293031323334
  1. var getLength = require('./_getLength'),
  2. isFunction = require('./isFunction'),
  3. isLength = require('./isLength');
  4. /**
  5. * Checks if `value` is array-like. A value is considered array-like if it's
  6. * not a function and has a `value.length` that's an integer greater than or
  7. * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
  8. *
  9. * @static
  10. * @memberOf _
  11. * @since 4.0.0
  12. * @category Lang
  13. * @param {*} value The value to check.
  14. * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
  15. * @example
  16. *
  17. * _.isArrayLike([1, 2, 3]);
  18. * // => true
  19. *
  20. * _.isArrayLike(document.body.children);
  21. * // => true
  22. *
  23. * _.isArrayLike('abc');
  24. * // => true
  25. *
  26. * _.isArrayLike(_.noop);
  27. * // => false
  28. */
  29. function isArrayLike(value) {
  30. return value != null && isLength(getLength(value)) && !isFunction(value);
  31. }
  32. module.exports = isArrayLike;