I have an array of objects, I call a series of methods on the array. I wanted to skip in between methods based on a condition. Is there a generic way to handle it instead of having an if/else block?
When a filter is applied i wanted to call filter method in this array, when filter is not applied i want skip that.
// when filter is applied
salesActivityTypes
.filter(s=>s.selected)
.map(key => key.name);
//when filter not applied
salesActivityTypes
.map(key => key.name);
I don't want to use something like if/else block and copy-pasting the same code twice. Is there any better way to handle this?
The order of methods call matters and should'nt change
Just add another check inside the .filter callback for whether filtering is active.
salesActivityTypes
.filter(s => filteringActive ? s.selected : true)
.map(key => key.name);
You don't need an if/else block, and if/else expression is enough and can be part of your chain:
(filteringActive
? salesActivityTypes.filter(s => s.selected)
: salesActivityTypes
).map(key => key.name);
Alternatively, in this particular case you can also pass a no-op callback to filter:
salesActivityTypes
.filter(filteringActive ? (s => s.selected) : (_ => true))
.map(key => key.name);