summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Early <aearly@fluid.com>2015-05-20 15:42:15 -0700
committerAlexander Early <aearly@fluid.com>2015-05-20 16:04:14 -0700
commit3ffbf2b2fddf68d824c98903c60a9d35b34570e6 (patch)
tree373f9636778f58f1854b776ed6b33dd4bd900636
parentfacb5cf42941c91f0d1d7a3fe3c8f40431745f8c (diff)
downloadasync-3ffbf2b2fddf68d824c98903c60a9d35b34570e6.tar.gz
optmize internal _each, _map, _keys, _forEachOf functions
-rw-r--r--lib/async.js41
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)) {