add grab method to get elements in a collection that match the indexes in the provided list array

Former-commit-id: 18df81c229cab4acde8f8157df9bb1001a51e9db
This commit is contained in:
Dan Heberden
2012-12-18 10:00:24 -08:00
parent bba18cd56b
commit 2ae0e9d902
2 changed files with 42 additions and 0 deletions

View File

@@ -2175,6 +2175,25 @@
return collection;
}
/**
* Grabs the elements in the `collection` using the specified indexes
* in the `list` array.
*
* @static
* @memberOf _
* @category Collections
* @param {Array|Object|String} collection The collection to iterate over.
* @param {Array} list The array of indexes to grab.
* @ returns {Array} Returns a new array of elements that matched the list array.
* @example
*
* _.grab( ['a', 'b', 'c', 'd', 'e', 'f'], [0, 2, 5] );
* // => ['a', 'c', 'f']
*/
function grab(collection, list) {
return invoke(list, function(a){ return a[this]; }, collection);
}
/**
* Creates an object composed of keys returned from running each element of
* `collection` through a `callback`. The corresponding value of each key is an
@@ -4239,6 +4258,7 @@
lodash.forIn = forIn;
lodash.forOwn = forOwn;
lodash.functions = functions;
lodash.grab = grab;
lodash.groupBy = groupBy;
lodash.initial = initial;
lodash.intersection = intersection;