function some(collection, callback, thisArg) {
      var result;
      callback = lodash.createCallback(callback, thisArg, 3);

      var index = -1,
          length = collection ? collection.length : 0;

      if (typeof length == 'number') {
        while (++index < length) {
          if ((result = callback(collection[index], index, collection))) {
            break;
          }
        }
      } else {
        forOwn(collection, function(value, index, collection) {
          return !(result = callback(value, index, collection));
        });
      }
      return !!result;
    }
Checks if the callback returns a truey value for **any** element of a
collection. The function returns as soon as it finds a passing value and
does not iterate over the entire collection. The callback is bound to
`thisArg` and invoked with three arguments; (value, index|key, collection).

If a property name is provided for `callback` the created "_.pluck" style
callback will return the property value of the given element.

If an object is provided for `callback` the created "_.where" style callback
will return `true` for elements that have the properties of the given object,
else `false`.

@static
@memberOf _
@alias any
@category Collections
@param {Array|Object|string} collection The collection to iterate over.
@param {Function|Object|string} [callback=identity] The function called
 per iteration. If a property name or object is provided it will be used
 to create a "_.pluck" or "_.where" style callback, respectively.
@param {*} [thisArg] The `this` binding of `callback`.
@returns {boolean} Returns `true` if any element passed the callback check,
 else `false`.
@example

_.some([null, 0, 'yes', false], Boolean);
// => true

var food = [
  { 'name': 'apple',  'organic': false, 'type': 'fruit' },
  { 'name': 'carrot', 'organic': true,  'type': 'vegetable' }
];

// using "_.pluck" callback shorthand
_.some(food, 'organic');
// => true

// using "_.where" callback shorthand
_.some(food, { 'type': 'meat' });
// => false