Run details:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36
Chrome 129
Windows
Desktop
14 days ago
Test name Executions per second
Spread operator 75015.3 Ops/sec
Spread operator v2 79680.3 Ops/sec
HTML Preparation code:
x
 
1
2
<script src='https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js'></script>
Script Preparation code:
 
permutations = new Array(10000).map(() => ({ pagination: 'blah blah blah' }));
function updatePagination(action, prev) {
  return action;
}
action = 'something else';
state = { data: { permutations: [] } };
index = 5;
Tests:
  • Spread operator

     
    const updated = Object.assign([...permutations], {
      [index]: Object.assign({}, permutations[index], { 
        pagination: updatePagination(action, permutations[index]) 
      })
    })
    return { ...state, data: { ...state.data, permutations: updated } };
  • Spread operator v2

     
    const updated = Object.assign([...permutations], {
      [index]: { ...permutations[index], pagination: updatePagination(action, permutations[index]) }
    })
    return { ...state, data: { ...state.data, permutations: updated } };