Run details:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36
Chrome 105
Mac OS X 10.15.7
Desktop
2 years ago
Test name Executions per second
Map - for of kv 2247832.8 Ops/sec
Map - forEach 2475144.5 Ops/sec
Object.entries() - for of kv 526837.6 Ops/sec
Object.entries() - forEach 99681.4 Ops/sec
Object - for in 382299.4 Ops/sec
Object - keys forech 84049.5 Ops/sec
Script Preparation code:
x
 
var obj = {
  a: 1,
  b: 2,
  c: 3,
  d: 4,
  e: 5,
  f: 6,
  g: 7,
  h: 8,
  i: 9,
  j: 10,
  k: 11,
  l: 12,
  m: 13,
  n: 14,
  o: 15,
  p: 16,
  q: 17,
  r: 18,
  s: 19,
  t: 20,
  u: 21,
  v: 22,
  w: 23,
  x: 24,
  y: 25,
  z: 26
};
var map = new Map(Object.entries(obj));
Tests:
  • Map - for of kv

     
    let total = 0;
    for (const [key, value] of map) {
        total += value;
    }
  • Map - forEach

     
    let total = 0;
    map.forEach(function(value, key) {
      total += value;
    });
  • Object.entries() - for of kv

     
    let total = 0;
    for (const [key, value] of Object.entries(obj)) {
      total += value;
    }
  • Object.entries() - forEach

     
    let total = 0;
    Object.entries(obj).forEach(function(value, key) {
      total += value;
    });
  • Object - for in

     
    let total = 0;
    for (const key in obj) {
      total += obj[key];
    }
  • Object - keys forech

     
    let total = 0;
    Object.keys(obj).forEach(function(key) {
      value = obj[key];
      total += value;
    });