| var eq = require('./eq'), | |
| isArrayLike = require('./isArrayLike'), | |
| isIndex = require('./_isIndex'), | |
| isObject = require('./isObject'); | |
| /** | |
| * Checks if the given 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 {boolean} Returns `true` if the arguments are from an iteratee call, | |
| * else `false`. | |
| */ | |
| function isIterateeCall(value, index, object) { | |
| if (!isObject(object)) { | |
| return false; | |
| } | |
| var type = typeof index; | |
| if (type == 'number' | |
| ? (isArrayLike(object) && isIndex(index, object.length)) | |
| : (type == 'string' && index in object) | |
| ) { | |
| return eq(object[index], value); | |
| } | |
| return false; | |
| } | |
| module.exports = isIterateeCall; | |