Assigning Object Properties to different object (v23)

Revision 23 of this benchmark created by J.Ducrot on


Description

Comparing various approaches to iterating over an object's enumerable properties and assigning them to a different object using vanilla JS, underscore.

Preparation HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>

Setup

var object = {};
    var foo = {};
    for (var i = 0; i < 333; ++i) {
      object['user'+i] = 'user'+i;
    }

Test runner

Ready to run.

Testing in
TestOps/sec
js while over keys
var keys = Object.keys(object);
var k = keys.length;
while(--k){
  foo[keys[k]] = object[keys[k]];
}
ready
underscore _.keys filtering
for (var i = 0, keys = _.keys(object); i < keys.length; ++i) {
  foo[keys[i]] = object[keys[i]];
}
ready
js keys filtering
for (var i = 0, keys = Object.keys(object), l = keys.length; i < l; ++i) {
  foo[keys[i]] = object[keys[i]];
}
ready
underscore while over keys
var keys = _.keys(object);
var k = keys.length;
while(--k){
  foo[keys[k]] = object[keys[k]];
}
ready
underscore.keys & .each
var keys = _.keys(object);
_.each(keys,function (key) {
  foo[key] = object[key];
});
ready
vanilla for…in
for (var property in object) {
  if (object.hasOwnProperty(property)) {
    foo[property] = object[property];
  }
}
ready
underscore extendOwn
_.extendOwn(foo,object);
ready
underscore clone
foo = _.clone(object);
ready

Revisions

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