mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-07 18:07:49 +00:00
Bump to v3.4.0.
This commit is contained in:
@@ -1,53 +1 @@
|
||||
var arrayMax = require('../internal/arrayMax'),
|
||||
createExtremum = require('../internal/createExtremum');
|
||||
|
||||
/**
|
||||
* Gets the maximum value of `collection`. If `collection` is empty or falsey
|
||||
* `-Infinity` is returned. If an iteratee function is provided it is invoked
|
||||
* for each value in `collection` to generate the criterion by which the value
|
||||
* is ranked. The `iteratee` is bound to `thisArg` and invoked with three
|
||||
* arguments; (value, index, collection).
|
||||
*
|
||||
* If a property name is provided for `predicate` the created `_.property`
|
||||
* style callback returns the property value of the given element.
|
||||
*
|
||||
* If a value is also provided for `thisArg` the created `_.matchesProperty`
|
||||
* style callback returns `true` for elements that have a matching property
|
||||
* value, else `false`.
|
||||
*
|
||||
* If an object is provided for `predicate` the created `_.matches` style
|
||||
* callback returns `true` for elements that have the properties of the given
|
||||
* object, else `false`.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @category Collection
|
||||
* @param {Array|Object|string} collection The collection to iterate over.
|
||||
* @param {Function|Object|string} [iteratee] The function invoked per iteration.
|
||||
* @param {*} [thisArg] The `this` binding of `iteratee`.
|
||||
* @returns {*} Returns the maximum value.
|
||||
* @example
|
||||
*
|
||||
* _.max([4, 2, 8, 6]);
|
||||
* // => 8
|
||||
*
|
||||
* _.max([]);
|
||||
* // => -Infinity
|
||||
*
|
||||
* var users = [
|
||||
* { 'user': 'barney', 'age': 36 },
|
||||
* { 'user': 'fred', 'age': 40 }
|
||||
* ];
|
||||
*
|
||||
* _.max(users, function(chr) {
|
||||
* return chr.age;
|
||||
* });
|
||||
* // => { 'user': 'fred', 'age': 40 };
|
||||
*
|
||||
* // using the `_.property` callback shorthand
|
||||
* _.max(users, 'age');
|
||||
* // => { 'user': 'fred', 'age': 40 };
|
||||
*/
|
||||
var max = createExtremum(arrayMax);
|
||||
|
||||
module.exports = max;
|
||||
module.exports = require('../math/max');
|
||||
|
||||
@@ -1,53 +1 @@
|
||||
var arrayMin = require('../internal/arrayMin'),
|
||||
createExtremum = require('../internal/createExtremum');
|
||||
|
||||
/**
|
||||
* Gets the minimum value of `collection`. If `collection` is empty or falsey
|
||||
* `Infinity` is returned. If an iteratee function is provided it is invoked
|
||||
* for each value in `collection` to generate the criterion by which the value
|
||||
* is ranked. The `iteratee` is bound to `thisArg` and invoked with three
|
||||
* arguments; (value, index, collection).
|
||||
*
|
||||
* If a property name is provided for `predicate` the created `_.property`
|
||||
* style callback returns the property value of the given element.
|
||||
*
|
||||
* If a value is also provided for `thisArg` the created `_.matchesProperty`
|
||||
* style callback returns `true` for elements that have a matching property
|
||||
* value, else `false`.
|
||||
*
|
||||
* If an object is provided for `predicate` the created `_.matches` style
|
||||
* callback returns `true` for elements that have the properties of the given
|
||||
* object, else `false`.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @category Collection
|
||||
* @param {Array|Object|string} collection The collection to iterate over.
|
||||
* @param {Function|Object|string} [iteratee] The function invoked per iteration.
|
||||
* @param {*} [thisArg] The `this` binding of `iteratee`.
|
||||
* @returns {*} Returns the minimum value.
|
||||
* @example
|
||||
*
|
||||
* _.min([4, 2, 8, 6]);
|
||||
* // => 2
|
||||
*
|
||||
* _.min([]);
|
||||
* // => Infinity
|
||||
*
|
||||
* var users = [
|
||||
* { 'user': 'barney', 'age': 36 },
|
||||
* { 'user': 'fred', 'age': 40 }
|
||||
* ];
|
||||
*
|
||||
* _.min(users, function(chr) {
|
||||
* return chr.age;
|
||||
* });
|
||||
* // => { 'user': 'barney', 'age': 36 };
|
||||
*
|
||||
* // using the `_.property` callback shorthand
|
||||
* _.min(users, 'age');
|
||||
* // => { 'user': 'barney', 'age': 36 };
|
||||
*/
|
||||
var min = createExtremum(arrayMin, true);
|
||||
|
||||
module.exports = min;
|
||||
module.exports = require('../math/min');
|
||||
|
||||
@@ -35,7 +35,7 @@ var createAggregator = require('../internal/createAggregator');
|
||||
* _.partition([1.2, 2.3, 3.4], function(n) {
|
||||
* return this.floor(n) % 2;
|
||||
* }, Math);
|
||||
* // => [[1, 3], [2]]
|
||||
* // => [[1.2, 3.4], [2.3]]
|
||||
*
|
||||
* var users = [
|
||||
* { 'user': 'barney', 'age': 36, 'active': false },
|
||||
|
||||
@@ -2,8 +2,8 @@ var isLength = require('../internal/isLength'),
|
||||
keys = require('../object/keys');
|
||||
|
||||
/**
|
||||
* Gets the size of `collection` by returning `collection.length` for
|
||||
* array-like values or the number of own enumerable properties for objects.
|
||||
* Gets the size of `collection` by returning its length for array-like
|
||||
* values or the number of own enumerable properties for objects.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
|
||||
@@ -55,8 +55,11 @@ var baseCallback = require('../internal/baseCallback'),
|
||||
* // => ['barney', 'fred', 'pebbles']
|
||||
*/
|
||||
function sortBy(collection, iteratee, thisArg) {
|
||||
if (collection == null) {
|
||||
return [];
|
||||
}
|
||||
var index = -1,
|
||||
length = collection ? collection.length : 0,
|
||||
length = collection.length,
|
||||
result = isLength(length) ? Array(length) : [];
|
||||
|
||||
if (thisArg && isIterateeCall(collection, iteratee, thisArg)) {
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
var baseEach = require('../internal/baseEach'),
|
||||
baseFlatten = require('../internal/baseFlatten'),
|
||||
baseSortBy = require('../internal/baseSortBy'),
|
||||
compareMultipleAscending = require('../internal/compareMultipleAscending'),
|
||||
isIterateeCall = require('../internal/isIterateeCall'),
|
||||
isLength = require('../internal/isLength');
|
||||
var baseFlatten = require('../internal/baseFlatten'),
|
||||
baseSortByOrder = require('../internal/baseSortByOrder'),
|
||||
isIterateeCall = require('../internal/isIterateeCall');
|
||||
|
||||
/**
|
||||
* This method is like `_.sortBy` except that it sorts by property names
|
||||
@@ -29,25 +26,16 @@ var baseEach = require('../internal/baseEach'),
|
||||
* // => [['barney', 26], ['barney', 36], ['fred', 30], ['fred', 40]]
|
||||
*/
|
||||
function sortByAll(collection) {
|
||||
var args = arguments;
|
||||
if (args.length > 3 && isIterateeCall(args[1], args[2], args[3])) {
|
||||
if (collection == null) {
|
||||
return [];
|
||||
}
|
||||
var args = arguments,
|
||||
guard = args[3];
|
||||
|
||||
if (guard && isIterateeCall(args[1], args[2], guard)) {
|
||||
args = [collection, args[1]];
|
||||
}
|
||||
var index = -1,
|
||||
length = collection ? collection.length : 0,
|
||||
props = baseFlatten(args, false, false, 1),
|
||||
result = isLength(length) ? Array(length) : [];
|
||||
|
||||
baseEach(collection, function(value) {
|
||||
var length = props.length,
|
||||
criteria = Array(length);
|
||||
|
||||
while (length--) {
|
||||
criteria[length] = value == null ? undefined : value[props[length]];
|
||||
}
|
||||
result[++index] = { 'criteria': criteria, 'index': index, 'value': value };
|
||||
});
|
||||
return baseSortBy(result, compareMultipleAscending);
|
||||
return baseSortByOrder(collection, baseFlatten(args, false, false, 1), []);
|
||||
}
|
||||
|
||||
module.exports = sortByAll;
|
||||
|
||||
47
collection/sortByOrder.js
Normal file
47
collection/sortByOrder.js
Normal file
@@ -0,0 +1,47 @@
|
||||
var baseSortByOrder = require('../internal/baseSortByOrder'),
|
||||
isArray = require('../lang/isArray'),
|
||||
isIterateeCall = require('../internal/isIterateeCall');
|
||||
|
||||
/**
|
||||
* This method is like `_.sortByAll` except that it allows specifying the
|
||||
* sort orders of the property names to sort by. A truthy value in `orders`
|
||||
* will sort the corresponding property name in ascending order while a
|
||||
* falsey value will sort it in descending order.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @category Collection
|
||||
* @param {Array|Object|string} collection The collection to iterate over.
|
||||
* @param {string[]} props The property names to sort by.
|
||||
* @param {boolean[]} orders The sort orders of `props`.
|
||||
* @returns {Array} Returns the new sorted array.
|
||||
* @example
|
||||
*
|
||||
* var users = [
|
||||
* { 'user': 'barney', 'age': 36 },
|
||||
* { 'user': 'fred', 'age': 40 },
|
||||
* { 'user': 'barney', 'age': 26 },
|
||||
* { 'user': 'fred', 'age': 30 }
|
||||
* ];
|
||||
*
|
||||
* // sort by `user` in ascending order and by `age` in descending order
|
||||
* _.map(_.sortByOrder(users, ['user', 'age'], [true, false]), _.values);
|
||||
* // => [['barney', 36], ['barney', 26], ['fred', 40], ['fred', 30]]
|
||||
*/
|
||||
function sortByOrder(collection, props, orders, guard) {
|
||||
if (collection == null) {
|
||||
return [];
|
||||
}
|
||||
if (guard && isIterateeCall(props, orders, guard)) {
|
||||
orders = null;
|
||||
}
|
||||
if (!isArray(props)) {
|
||||
props = props == null ? [] : [props];
|
||||
}
|
||||
if (!isArray(orders)) {
|
||||
orders = orders == null ? [] : [orders];
|
||||
}
|
||||
return baseSortByOrder(collection, props, orders);
|
||||
}
|
||||
|
||||
module.exports = sortByOrder;
|
||||
1
collection/sum.js
Normal file
1
collection/sum.js
Normal file
@@ -0,0 +1 @@
|
||||
module.exports = require('../math/sum');
|
||||
Reference in New Issue
Block a user