Optimize _.contains and _.omit.

Former-commit-id: f1d7b5699bae6de90d880fe593531f7d3772924e
This commit is contained in:
John-David Dalton
2012-10-13 23:29:51 -07:00
parent 96553b217c
commit dea8ad4c49
2 changed files with 33 additions and 4 deletions

View File

@@ -1743,7 +1743,7 @@
forIn(object, function(value, key, object) {
if (isFunc
? !callback(value, key, object)
: indexOf(props, key) < 0
: indexOf(props, key, 1) < 0
) {
result[key] = value;
}
@@ -1868,9 +1868,16 @@
* // => true
*/
function contains(collection, target) {
return toString.call(collection) == stringClass
? collection.indexOf(target) > -1
: some(collection, function(value) { return value === target; });
var length = collection ? collection.length : 0;
if (length === +length) {
return (toString.call(collection) == stringClass
? collection.indexOf(target)
: indexOf(collection, target)
) > -1;
}
return some(collection, function(value) {
return value === target;
});
}
/**

View File

@@ -512,6 +512,28 @@
/*--------------------------------------------------------------------------*/
suites.push(
Benchmark.Suite('`_.contains` iterating an array')
.add('Lo-Dash', '\
lodash.contains(numbers, 19)'
)
.add('Underscore', '\
_.contains(numbers, 19)'
)
);
suites.push(
Benchmark.Suite('`_.contains` iterating an object')
.add('Lo-Dash', '\
lodash.contains(object, 19)'
)
.add('Underscore', '\
_.contains(object, 19)'
)
);
/*--------------------------------------------------------------------------*/
suites.push(
Benchmark.Suite('`_.countBy` with `callback` iterating an array')
.add('Lo-Dash', '\