From 3ffbf2b2fddf68d824c98903c60a9d35b34570e6 Mon Sep 17 00:00:00 2001 From: Alexander Early Date: Wed, 20 May 2015 15:42:15 -0700 Subject: optmize internal _each, _map, _keys, _forEachOf functions --- lib/async.js | 41 ++++++++++++++++++----------------------- 1 file 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)) { -- cgit v1.2.1