diff options
author | Alexander Early <aearly@fluid.com> | 2015-05-20 15:42:15 -0700 |
---|---|---|
committer | Alexander Early <aearly@fluid.com> | 2015-05-20 16:04:14 -0700 |
commit | 3ffbf2b2fddf68d824c98903c60a9d35b34570e6 (patch) | |
tree | 373f9636778f58f1854b776ed6b33dd4bd900636 | |
parent | facb5cf42941c91f0d1d7a3fe3c8f40431745f8c (diff) | |
download | async-3ffbf2b2fddf68d824c98903c60a9d35b34570e6.tar.gz |
optmize internal _each, _map, _keys, _forEachOf functions
-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)) { |