diff options
-rw-r--r-- | lib/async.js | 41 |
1 files changed, 18 insertions, 23 deletions
diff --git a/lib/async.js b/lib/async.js index 81916fd..a1650a7 100644 --- a/lib/async.js +++ b/lib/async.js @@ -50,26 +50,26 @@ }; var _each = function (arr, iterator) { - for (var i = 0; i < arr.length; i += 1) { - iterator(arr[i], i, arr); - } + var index = -1, + length = arr.length; + + while (++index < length) { + iterator(arr[index], index, arr); + } }; var _map = function (arr, iterator) { - if (arr.map) { - return arr.map(iterator); - } - var results = []; - _each(arr, function (x, i, a) { - results.push(iterator(x, i, a)); - }); - return results; + var index = -1, + length = arr.length, + result = Array(length); + + while (++index < length) { + result[index] = iterator(arr[index], index, arr); + } + return result; }; var _reduce = function (arr, iterator, memo) { - if (arr.reduce) { - return arr.reduce(iterator, memo); - } _each(arr, function (x, i, a) { memo = iterator(memo, x, i, a); }); @@ -77,17 +77,12 @@ }; var _forEachOf = function (object, iterator) { - for (var key in object) { - if (object.hasOwnProperty(key)) { - iterator(object[key], key); - } - } + _each(_keys(object), function (key) { + iterator(object[key], key); + }); }; - var _keys = function (obj) { - if (Object.keys) { - return Object.keys(obj); - } + var _keys = Object.keys || function (obj) { var keys = []; for (var k in obj) { if (obj.hasOwnProperty(k)) { |