Run details:
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
Mac OS X 10.15.7
Desktop
2 years ago
Test name Executions per second
filter.map 12177.8 Ops/sec
reduce 6040.9 Ops/sec
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))