Each object keys: Underscore.js vs. lodash vs. for..in (v10)

Revision 10 of this benchmark created by Ari on


Preparation HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.8.0/lodash.min.js"></script>
<script>
var lodash = _.noConflict();
</script>

Setup

var obj = {
    one: {},
    two: {},
    three: {}
  }
  
  function _log(key) { console.log(key); }
  var hasOwnProperty = obj.hasOwnProperty;

Test runner

Ready to run.

Testing in
TestOps/sec
Underscore.js
_.each(_.keys(obj), _log);
ready
lodash
lodash.forEach(_.keys(obj), _log);
ready
for..in
for (var key in obj) {
  if (obj.hasOwnProperty(key)) _log(key);
}
ready
for loop _.keys Underscore.js
for (var i = 0, keys = _.keys(obj), len = keys.length; i < len; i++) {
  _log(keys[i]);
}
ready
for loop _.keys lodash
for (var i = 0, keys = lodash.keys(obj), len = keys.length; i < len; i++) {
  _log(keys[i]);
}
ready
while loop _.keys lodash
var keys = lodash.keys(obj),
    i = keys.length;
while (i--) {
  _log(keys[i]);
}
ready
for..in with hasOwnProperty call
for (var key in obj) {
  if (hasOwnProperty.call(obj, key)) _log(key);
}
ready
object keys foreach
Object.keys(obj).forEach(function(key){
    _log(obj[key]);
});
ready
lodash foreach
_.forEach(obj,function(val,key){
    _log(val);
});
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.