optimized keys, values, and pluck

This commit is contained in:
Jeremy Ashkenas
2009-10-29 11:03:53 -04:00
parent 1d8420af00
commit 9b1da9b258
2 changed files with 6 additions and 14 deletions

View File

@@ -298,8 +298,8 @@ _.invoke([[5, 1, 7], [3, 2, 1]], 'sort');
<p id="pluck">
<b class="header">pluck</b><code>_.pluck(list, propertyName)</code>
<br />
An optimized version of what is perhaps the most common use-case for
<b>map</b>: returning a list of property values.
An convenient version of what is perhaps the most common use-case for
<b>map</b>: extracting a list of property values.
</p>
<pre>
var stooges = [{name : 'moe', age : 40}, {name : 'larry', age : 50}, {name : 'curly', age : 60}];

View File

@@ -149,11 +149,9 @@
});
};
// Optimized version of a common use case of map: fetching a property.
// Convenience version of a common use case of map: fetching a property.
_.pluck = function(obj, key) {
var results = [];
_.each(obj, function(value){ results.push(value[key]); });
return results;
return _.map(obj, function(value){ return value[key]; });
};
// Return the maximum item or (item-based computation).
@@ -357,18 +355,12 @@
// Retrieve the names of an object's properties.
_.keys = function(obj) {
return _.reduce(obj, [], function(memo, value, key) {
memo.push(key);
return memo;
});
return _.map(obj, function(value, key){ return key; });
};
// Retrieve the values of an object's properties.
_.values = function(obj) {
return _.reduce(obj, [], function(memo, value) {
memo.push(value);
return memo;
});
return _.map(obj, identity);
};
// Extend a given object with all of the properties in a source object.