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:
 
function getItems(count) {
  let id = 1;
  return _.times(count, () => ({
    name: "city" + id++,
    visited: true
  }))
}
var items = getItems(1000)
Tests:
  • for...of

     
    const result = {};
    for(let item of items) {
      result[item.name] = item.visited;
    }
  • reduce spread

     
    let initial = {};
    const result = items.reduce((accumulator, item) => ({
      ...accumulator,
      [item.name]: item.visited
    }), initial);
  • reduce mutate

     
    let initial = {};
    const result = items.reduce((accumulator, item) => {
      accumulator[item.name] = item.visited;
      return accumulator;
    }, initial);
  • object.fromEntries ...map

     
    let result = Object.fromEntries(
      items.map(({ name, visited }) => [name, visited])
    );
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    for...of
    reduce spread
    reduce mutate
    object.fromEntries ...map

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 4 years ago)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:79.0) Gecko/20100101 Firefox/79.0
Firefox 79 on Mac OS X 10.15
View result in a separate tab
Test name Executions per second
for...of 4841.6 Ops/sec
reduce spread 22.7 Ops/sec
reduce mutate 5061.4 Ops/sec
object.fromEntries ...map 2513.5 Ops/sec