DEV Community

Discussion on: Much needed filterMap in JavaScript

Collapse
 
avalander profile image
Avalander • Edited

If I were to implement something like filterMap, I would pass in the predicate and the transformation as separate functions. However, you can use reduce for what you're doing, no need to implement a new method on Array.

const emails = customers.reduce(
  (prev, c) => c.active
    ? [ ...prev, c ]
    : prev,
  []
)
Collapse
 
akashkava profile image
Akash Kava

It is 80% slower, jsperf.com/array-filtermap/2

Collapse
 
avalander profile image
Avalander • Edited

Yeah, sorry, been using array destructuring too much lately. If it's speed we're going after we can't create a new array at each iteration step.

const emails = customers.reduce(
  (prev, c) => {
    if (c.active) prev.push(c)
    return prev
  },
  []
)
Thread Thread
 
akashkava profile image
Akash Kava

This way reduce can be used as map as well, nice trick but I still prefer filterMap for its smaller syntax.