Run details:
Mozilla/5.0 (iPhone; CPU iPhone OS 18_2_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/132.0.6834.78 Mobile/15E148 Safari/604.1
Chrome Mobile iOS 132
iOS 18.2.1
Mobile
one month ago
Test name Executions per second
Reduce and Spread 1175197.1 Ops/sec
ForEach and Mutate (for .. in loop) 1089860.5 Ops/sec
Mutate with Object.assign 1723426.0 Ops/sec
Foreach and Mutate (Object.assign) 1511515.1 Ops/sec
Script Preparation code:
AخA
 
var objectsArray = Array(10).fill(() => {
  return Object.fromEntries(Array(100).fill(() => {
    const key = Math.random().toString(36).substring(2, 5);
    const value = Math.random().toString(36).substring(2, 5);
    return [key, value];
  }));
});
Tests:
  • Reduce and Spread

     
    var combined = objectsArray.reduce((memo, obj) => ({...memo, ...obj}), {});
  • ForEach and Mutate (for .. in loop)

     
    var combined = {}
    objectsArray.forEach(obj => {
      for (const key in obj) {
        combined[key] = obj[key];
      }
    });
  • Mutate with Object.assign

     
    var combined = Object.assign(...objectsArray)
  • Foreach and Mutate (Object.assign)

     
    var combined = {}
    objectsArray.forEach(obj => Object.assign(combined, obj));