Script Preparation code:
x
 
var arr = [];
for (var i = 0; i < 12345; i++) {
  arr[i] = i;
}
function reduceFilterMap(filterSelector, valueSelector) {
    return [
        (previousValue, currentValue, currentIndex) => {
            const shouldBeAdded = filterSelector(currentValue, currentIndex);
            if (shouldBeAdded) {
                previousValue.push(valueSelector(currentValue, currentIndex));
            }
            return previousValue;
        },
        [],
    ];
}
Tests:
  • filter.map

     
    arr.filter(v => v % 2).map(v => v * 2);
  • reduce

     
    arr.reduce(...reduceFilterMap(v => v % 2, v => v * 2))
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    filter.map
    reduce

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: one year ago)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 YaBrowser/23.3.0.2318 Yowser/2.5 Safari/537.36
Yandex Browser 23 on Mac OS X 10.15.7
View result in a separate tab
Test name Executions per second
filter.map 12177.8 Ops/sec
reduce 6040.9 Ops/sec