isArrayLike.js 910 B

1234567891011121314151617181920212223242526272829303132333435
  1. import getLength from './internal/getLength';
  2. import isFunction from './isFunction';
  3. import isLength from './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. * @type Function
  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 &&
  31. !(typeof value == 'function' && isFunction(value)) && isLength(getLength(value));
  32. }
  33. export default isArrayLike;