mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-03 08:37:49 +00:00
Ensure fp key methods provide the key argument to their iteratees. [closes #1842]
This commit is contained in:
@@ -40,21 +40,16 @@ function baseConvert(util, name, func) {
|
||||
keys = _.keys,
|
||||
rearg = _.rearg;
|
||||
|
||||
var baseAry = function(func, n) {
|
||||
return function() {
|
||||
var args = arguments,
|
||||
length = Math.min(args.length, n);
|
||||
var baseArity = function(func, n) {
|
||||
return n == 2
|
||||
? function(a, b) { return func.apply(undefined, arguments); }
|
||||
: function(a) { return func.apply(undefined, arguments); };
|
||||
};
|
||||
|
||||
switch (length) {
|
||||
case 1: return func(args[0]);
|
||||
case 2: return func(args[0], args[1]);
|
||||
}
|
||||
args = Array(length);
|
||||
while (length--) {
|
||||
args[length] = arguments[length];
|
||||
}
|
||||
return func.apply(undefined, args);
|
||||
};
|
||||
var baseAry = function(func, n) {
|
||||
return n == 2
|
||||
? function(a, b) { return func(a, b); }
|
||||
: function(a) { return func(a); };
|
||||
};
|
||||
|
||||
var cloneArray = function(array) {
|
||||
@@ -83,6 +78,13 @@ function baseConvert(util, name, func) {
|
||||
});
|
||||
};
|
||||
|
||||
var iterateeRearg = function(func, indexes) {
|
||||
return overArg(func, function(func) {
|
||||
var n = indexes.length;
|
||||
return baseArity(rearg(baseAry(func, n), indexes), n);
|
||||
});
|
||||
};
|
||||
|
||||
var overArg = function(func, iteratee, retArg) {
|
||||
return function() {
|
||||
var length = arguments.length,
|
||||
@@ -172,6 +174,10 @@ function baseConvert(util, name, func) {
|
||||
if (n) {
|
||||
result = iterateeAry(result, n);
|
||||
}
|
||||
var indexes = mapping.iterateeRearg[name];
|
||||
if (indexes) {
|
||||
result = iterateeRearg(result, indexes);
|
||||
}
|
||||
if (cap > 1) {
|
||||
result = curry(result, cap);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user