loading...
Cover image for Creating a simple Vue pluralize filter
Webhook Relay

Creating a simple Vue pluralize filter

krusenas profile image Karolis Updated on ・1 min read

There are many options how to create a pluralize function but in Vue you should probably use filters. Let's create one as it's always handy to have one.

Step 1: Add pluralize package

Let's use https://github.com/blakeembrey/pluralize to do the heavy lifting:

yarn add pluralize

Step 2: Register filter

Our pluralize filter will take two arguments - first one is the left variable in the filter and second is the filter function argument (depends on your code structure, but it's usually main.js or a dedicated filters file):

// .. your other imports
import pluralize from 'pluralize'

// .. your other code

Vue.filter('pluralize', function (value, number) {
  return pluralize(value, number)
})

Step 3: Use the filter!

Now, to use the filter on the left we give it the word we want to pluralize and as an argument we pass the count:

{{ tunnels }} {{ 'tunnel' | pluralize(tunnels) }}

That's it :) Now, based on tunnels variable it will be either '1 tunnel' or '50 tunnels'.

I hope this will be useful to you once you need it!

Discussion

pic
Editor guide
Collapse
gnclmorais profile image
Gonçalo Morais

Nice tip! Looking at the documentation, if you add true to your return pluralize(value, number) (making it return pluralize(value, number, true)), you could remove the first {{}} and have it simply {{ 'tunnel' | pluralize(tunnels) }}.

Collapse
chrisachard profile image
Chris Achard

I can't believe I didn't think to look for a pluralizer before as an npm module... of course it exists! Thanks :)

Collapse
swsalim profile image
Yuyu

Nice tips on making your own filte.

Collapse
krusenas profile image
Karolis Author

I am usually using quite a lot of filters in my applications for various things like encoding/decoding base64, pretty printing JSON and so on. Filters are really great! :)

Collapse
_aadil77 profile image
aadill77

we can use Point Free Expression in vue.filter as the functions share the same shape.

Vue.filter('pluralize', pluralize);