DEV Community

Cover image for Creating a simple Vue pluralize filter
Karolis for Webhook Relay

Posted on • Edited on

Creating a simple Vue pluralize filter

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
Enter fullscreen mode Exit fullscreen mode

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)
})
Enter fullscreen mode Exit fullscreen mode

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) }}
Enter fullscreen mode Exit fullscreen mode

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!

Top comments (5)

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

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);