DEV Community

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

Posted on • Updated 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 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)

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) }}.

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

swsalim profile image

Nice tips on making your own filte.

krusenas profile image

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! :)

_aadil77 profile image

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

Vue.filter('pluralize', pluralize);