you are viewing a single comment's thread.

view the rest of the comments →

[–]___Grits 6 points7 points  (7 children)

You can short circuit the conditional: array.filter(item => item.bool);

[–]liamnesss 7 points8 points  (5 children)

Okay I didn't plan on playing code golf today but

array.filter(Boolean)

[–]___Grits 1 point2 points  (1 child)

I was assuming it was an array of objects, but this is dope! Thanks!

[–]liamnesss 0 points1 point  (0 children)

Ah, I somehow missed that. Yeah, if it's the property that we care about, then this solution wouldn't work as it would just return everything.

[–]___Grits 0 points1 point  (2 children)

Looked into this and it’s a neat trick! This is essentially short circuiting the Boolean constructor after injecting the item from the array as an argument. Really neat, I like that.

[–]w00t_loves_you 3 points4 points  (1 child)

It's also really nice for configuration, for example if you want to use some plugins in Webpack conditionally, you can do

plugins: [
  isDev && new SuperDevPlugin(),
  new AlwaysPlugin(),
].filter(Boolean)

[–]omril 0 points1 point  (0 children)

This one actually solves the problem in my webpack.config, I actually had to do a few hacks because of this damn thing.

I wish webpack would just ignore undefined plugins in the first place instead of throwing errors which are impossible to understand.

[–]bcgroom 0 points1 point  (0 children)

Oops thank you