Run details:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
Chrome 71
Mac OS X 10.14.2
Desktop
6 years ago
Test name Executions per second
lodash.each 3765.6 Ops/sec
native for-of w/ entries 1428.2 Ops/sec
native forEach w/ entries 1310.6 Ops/sec
vanilla for-loop w/ Object.keys 1188.5 Ops/sec
vanilla for-loop w/ Object.entries 1432.8 Ops/sec
vanilla for-loop w/ Object.values (no keys) 40721.1 Ops/sec
native forEach w/ Object.values (no keys) 26854.6 Ops/sec
native for-in 644.2 Ops/sec
HTML Preparation code:
AخA
 
1
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js"></script>
Script Preparation code:
 
var obj = Array.from({ length: 10000 }).map((value, i) => i).reduce((val, v) => { val[v] = v; return val; }, {})
Tests:
  • lodash.each

     
    _.each(obj, function(v,k) {})
  • native for-of w/ entries

     
    for (const [k, v] of Object.entries(obj)) {}
  • native forEach w/ entries

     
    Object.entries(obj).forEach(function(v, k) {})
  • vanilla for-loop w/ Object.keys

     
    const keys = Object.keys(obj);
    for (let i = 0; i < keys.length; i++) { const v = obj[keys[i]]; }
  • vanilla for-loop w/ Object.entries

     
    const entries = Object.entries(obj);
    for (let i = 0; i < entries.length; i++) { const [k, v] = entries[i]; }
  • vanilla for-loop w/ Object.values (no keys)

     
    const values = Object.values(obj);
    for (let i = 0; i < values.length; i++){ }
  • native forEach w/ Object.values (no keys)

     
    Object.values(obj).forEach(function(v) {})
  • native for-in

     
    for (const prop in obj) { if (obj.hasOwnProperty(prop)) { const v = obj[prop]; } }