Tests:
  • Using array filter and reduce + spread

    x
     
    PRIMARY_SCOPES = ['a', 'd']
    availableScopes = {'a': 'A', 'b': 'B', 'c': 'C', 'd': 'D'}
    const output = PRIMARY_SCOPES.filter((scope) => scope in availableScopes).reduce(
          (result, scope) => ({
            ...result,
            [scope]: availableScopes[scope],
          }),
          {},
        );
  • Using array filter and object assign

     
    PRIMARY_SCOPES = ['a', 'd']
    availableScopes = {'a': 'A', 'b': 'B', 'c': 'C', 'd': 'D'}
    const output = {};
        Object.entries(availableScopes).forEach(([key, value]) => {
          if (!PRIMARY_SCOPES.includes(key)) {
            return;
          }
          Object.assign(output, { [key]: value });
        });
        return output;
  • Using array filter and object assign SMALLER array first

     
    PRIMARY_SCOPES = ['a', 'd']
    availableScopes = {'a': 'A', 'b': 'B', 'c': 'C', 'd': 'D'}
    const output = {};
        PRIMARY_SCOPES.filter((scope) => scope in availableScopes).forEach((scope) => {      
          Object.assign(output, { [scope]: availableScopes[scope] });
        });
        return output;
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Using array filter and reduce + spread
    Using array filter and object assign
    Using array filter and object assign SMALLER array first

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 3 years ago)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36
Chrome 100 on Windows
View result in a separate tab
Test name Executions per second
Using array filter and reduce + spread 582422.5 Ops/sec
Using array filter and object assign 432107.6 Ops/sec
Using array filter and object assign SMALLER array first 523630.8 Ops/sec