diff --git a/lodash.js b/lodash.js index 17609c897..32b8595c9 100644 --- a/lodash.js +++ b/lodash.js @@ -4808,7 +4808,6 @@ * * @static * @memberOf _ - * @type Function * @category Collections * @param {Array|Object|string} collection The collection to iterate over. * @param {Object} source The object of property values to filter by. @@ -4826,7 +4825,9 @@ * _.where(characters, { 'pets': ['dino'] }); * // => [{ 'name': 'fred', 'age': 40, 'pets': ['baby puss', 'dino'] }] */ - var where = filter; + function where(collection, source) { + return filter(collection, isObject(source) ? source : {}); + } /*--------------------------------------------------------------------------*/ diff --git a/test/test.js b/test/test.js index 364f71e96..c0ac31d89 100644 --- a/test/test.js +++ b/test/test.js @@ -9569,13 +9569,18 @@ deepEqual(_.where(collection, { 'a': 1 }), [{ 'a': 1 }, { 'a': 1, 'b': 2 }]); }); - test('should match all elements when provided an empty `properties` object', 2, function() { - var actual = _.where(array, {}); - ok(actual !== array); - deepEqual(actual, array); + test('should match all elements when provided an empty `source`', 1, function() { + var expected = _.map(empties, _.constant(array)); + + var actual = _.map(empties, function(value) { + var result = _.where(array, value); + return result !== array && result; + }); + + deepEqual(actual, expected); }); - test('should deep compare `properties` values', 1, function() { + test('should deep compare `source` values', 1, function() { var collection = [{ 'a': { 'b': { 'c': 1, 'd': 2 }, 'e': 3 }, 'f': 4 }], expected = _.cloneDeep(collection);