Skip to content

Commit

Permalink
Merge pull request #2065 from jridgewell/refine-pick
Browse files Browse the repository at this point in the history
Refine _.pick
  • Loading branch information
jashkenas committed Feb 20, 2015
2 parents 3abc3c9 + b47c21a commit 053e468
Showing 1 changed file with 10 additions and 13 deletions.
23 changes: 10 additions & 13 deletions underscore.js
Expand Up @@ -1014,23 +1014,20 @@

// Return a copy of the object only containing the whitelisted properties.
_.pick = function(obj, iteratee, context) {
var result = {}, key;
var result = {}, keys;
if (obj == null) return result;
if (_.isFunction(iteratee)) {
keys = _.allKeys(obj);
iteratee = optimizeCb(iteratee, context);
var keys = _.allKeys(obj);
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
var value = obj[key];
if (iteratee(value, key, obj)) result[key] = value;
}
} else {
var keys = flatten(arguments, false, false, 1);
obj = new Object(obj);
for (var i = 0, length = keys.length; i < length; i++) {
key = keys[i];
if (key in obj) result[key] = obj[key];
}
keys = flatten(arguments, false, false, 1);
iteratee = function(value, key, obj) { return key in obj; };
obj = Object(obj);
}
for (var i = 0, length = keys.length; i < length; i++) {
var key = keys[i];
var value = obj[key];
if (iteratee(value, key, obj)) result[key] = value;
}
return result;
};
Expand Down

0 comments on commit 053e468

Please sign in to comment.