* Checks if the provided arguments are from an iteratee call. * * @private * @param {*} value The potential iteratee value argument. * @param {*} index The potential iteratee index or key argument. * @param {*} object The potential iteratee object argument. * @returns {
(value, index, object)
| 5633 | * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`. |
| 5634 | */ |
| 5635 | function isIterateeCall(value, index, object) { |
| 5636 | if (!isObject(object)) { |
| 5637 | return false; |
| 5638 | } |
| 5639 | var type = typeof index; |
| 5640 | if (type == 'number') { |
| 5641 | var length = getLength(object), |
| 5642 | prereq = isLength(length) && isIndex(index, length); |
| 5643 | } else { |
| 5644 | prereq = type == 'string' && index in object; |
| 5645 | } |
| 5646 | if (prereq) { |
| 5647 | var other = object[index]; |
| 5648 | return value === value ? (value === other) : (other !== other); |
| 5649 | } |
| 5650 | return false; |
| 5651 | } |
| 5652 | |
| 5653 | /** |
| 5654 | * Checks if `value` is a property name and not a property path. |
no test coverage detected