function contains(collection, target, fromIndex) {
      var index = -1,
          indexOf = getIndexOf(),
          length = collection ? collection.length : 0,
          result = false;

      fromIndex = (fromIndex < 0 ? nativeMax(0, length + fromIndex) : fromIndex) || 0;
      if (isArray(collection)) {
        result = indexOf(collection, target, fromIndex) > -1;
      } else if (typeof length == 'number') {
        result = (isString(collection) ? collection.indexOf(target, fromIndex) : indexOf(collection, target, fromIndex)) > -1;
      } else {
        baseEach(collection, function(value) {
          if (++index >= fromIndex) {
            return !(result = value === target);
          }
        });
      }
      return result;
    }
Checks if a given value is present in a collection using strict equality
for comparisons, i.e. `===`. If `fromIndex` is negative, it is used as the
offset from the end of the collection.

@static
@memberOf _
@alias include
@category Collections
@param {Array|Object|string} collection The collection to iterate over.
@param {*} target The value to check for.
@param {number} [fromIndex=0] The index to search from.
@returns {boolean} Returns `true` if the `target` element is found, else `false`.
@example

_.contains([1, 2, 3], 1);
// => true

_.contains([1, 2, 3], 1, 2);
// => false

_.contains({ 'name': 'fred', 'age': 40 }, 'fred');
// => true

_.contains('pebbles', 'eb');
// => true