Test name | Executions per second |
---|---|
filter.map | 12177.8 Ops/sec |
reduce | 6040.9 Ops/sec |
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;
},
[],
];
}
arr.filter(v => v % 2).map(v => v * 2);
arr.reduce(reduceFilterMap(v => v % 2, v => v * 2))