From 818c6711d8dc7e3dbd5feb58513ec87bef69e689 Mon Sep 17 00:00:00 2001 From: John-David Dalton Date: Mon, 24 Feb 2014 22:40:26 -0800 Subject: [PATCH] Cleanup `_.first`, `_.initial`, `_.last`, and `_.rest`. --- lodash.js | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/lodash.js b/lodash.js index c4d7a6825..8468d5c7e 100644 --- a/lodash.js +++ b/lodash.js @@ -1034,6 +1034,7 @@ // ensure `new bound` is an instance of `func` var thisBinding = baseCreate(func.prototype), result = func.apply(thisBinding, args || arguments); + return isObject(result) ? result : thisBinding; } return func.apply(thisArg, args || arguments); @@ -2385,11 +2386,11 @@ * // => ['barney', 'fred'] */ function first(array, callback, thisArg) { - var n = 0, - length = array ? array.length : 0; - if (typeof callback != 'number' && callback != null) { - var index = -1; + var index = -1, + length = array ? array.length : 0, + n = 0; + callback = lodash.createCallback(callback, thisArg, 3); while (++index < length && callback(array[index], index, array)) { n++; @@ -2558,17 +2559,18 @@ * // => ['barney', 'fred'] */ function initial(array, callback, thisArg) { - var n = 0, - length = array ? array.length : 0; + var length = array ? array.length : 0; if (typeof callback != 'number' && callback != null) { - var index = length; + var index = length, + n = 0; + callback = lodash.createCallback(callback, thisArg, 3); while (index-- && callback(array[index], index, array)) { n++; } } else { - n = (callback == null || thisArg) ? 1 : callback || n; + n = (callback == null || thisArg) ? 1 : callback; } n = length - n; return slice(array, 0, n > 0 ? n : 0); @@ -2683,11 +2685,12 @@ * // => [{ 'name': 'pebbles', 'employer': 'na', 'blocked': true }] */ function last(array, callback, thisArg) { - var n = 0, - length = array ? array.length : 0; + var length = array ? array.length : 0; if (typeof callback != 'number' && callback != null) { - var index = length; + var index = length, + n = 0; + callback = lodash.createCallback(callback, thisArg, 3); while (index-- && callback(array[index], index, array)) { n++; @@ -2937,9 +2940,9 @@ */ function rest(array, callback, thisArg) { if (typeof callback != 'number' && callback != null) { - var n = 0, - index = -1, - length = array ? array.length : 0; + var index = -1, + length = array ? array.length : 0, + n = 0; callback = lodash.createCallback(callback, thisArg, 3); while (++index < length && callback(array[index], index, array)) {