4 ms·
I basically rely on map 80% of the time for iteration. I do have to spend some mental cycles on deciding where to go if I needed to break or skip elements. That
by nefitty 5y ago
I basically rely on map 80% of the time for iteration. I do have to spend some mental cycles on deciding where to go if I needed to break or skip elements. That was until I discovered the beautiful .flatMap() trick of returning an empty array to skip or exclude an index item.
Is it bad to use map?
- yakshaving_jgt 5y agoWhat are you struggling with when trying to skip elements? > Is it bad to use map? No.
- nefitty 5y agoWhether to use a for loop or for of or forEach or map().filter() etc flatMap takes care of a lot of that
- yakshaving_jgt 5y agoWhy are you using a “trick” to skip an element in some structure when mapping a function over it? For posterity (and forgive me if this JavaScript syntax is inaccurate; I don't write it so much these days)… xs.map(a => shouldBeSkipped ? a : f(a))
- wlamartin 5y agoThey don't want to keep the unmapped value in the resulting collection at all. flatMap allows for removal of an element in one traverse, unlike filter+map with eager behaviour.
- yakshaving_jgt 5y agoThen why not just use a fold?
- wlamartin 5y agoSure, there's many ways to skin a cat. Given the option, I wouldn't choose either of these, and instead use something like filterMap[1] which I think conveys intent better than a fold or flatMap. Btw, I'm assuming that the original map questioner wasn't solely using flatMap for side-effectful iteration, which reading again, I'm a bit suspicious about. 1: https://gcanti.github.io/fp-ts/modules/Array.ts.html#filtermap https://gcanti.github.io/fp-ts/modules/Array.ts.html#filterm...
- bluefirebrand 5y agoI see people use JavaScript Array.map a lot when they aren't doing anything with the returned array, which I find kind of irritating. So if you're using map sensibly, no there's nothing wrong. But I don't like the dogma I read a lot which is "use map always" because it leads to inexperience developers using it in the wrong circumstances.
- Akronymus 5y agoDoes JS have something like array.iter?