diff --git a/src/methods/each.js b/src/methods/each.js
index <HASH>..<HASH> 100644
--- a/src/methods/each.js
+++ b/src/methods/each.js
@@ -4,25 +4,20 @@ module.exports = function each(fn) {
   let stop = false;
 
   if (Array.isArray(this.items)) {
-    this.items.forEach((item, key, array) => {
-      if (!stop) {
-        const output = fn(item, key, array);
+    const { length } = this.items;
 
-        if (output === false) {
-          stop = true;
-        }
-      }
-    });
+    for (let i = 0; i < length && !stop; i++) {
+      stop = fn(this.items[i], i, this.items) === false;
+    }
   } else {
-    Object.keys(this.items).forEach((key) => {
-      if (!stop) {
-        const output = fn(this.items[key], key, this.items);
+    const keys = Object.keys(this.items);
+    const { length } = keys;
 
-        if (output === false) {
-          stop = true;
-        }
-      }
-    });
+    for (let i = 0; i < length && !stop; i++) {
+      const key = keys[i];
+
+      stop = fn(this.items[key], key, this.items) === false;
+    }
   }
 
   return this;
Exit from for loop to reduce execution time

Using `forEach` doesn't give an option to break the loop so implement it ourselves then use `stop` to break from it.



I also like to support the asynchronous each? will it break library?