inflect()
Often nouns need slight changes depending on the quantity of that noun. Example: One person, several people. I call these differences “inflections”. The inflect
function below is a little helper function I use to help me apply inflections in my application.
const inflect =
(singular, plural = `${singular}s`) =>
quantity =>
Math.abs(quantity) === 1 ? singular : plural
inflect
is a higher order function, meaning it’s a function that returns a function. If you need some info on higher order functions, check out my post on them and the post on currying.
This solution makes use of default parameters for the plural
argument. If adding an “s” is all you need to make a plural, then you don’t need to provide it. Like this:
const inflectPost = inflect('post')
console.log(inflectPost(1)) // 'post'
console.log(inflectPost(2)) // 'posts'
But often plurals have oddities (like “person” and “people”), so you can supply a plural
argument when you need it.
const inflectMouse = inflect('mouse', 'mice')
const inflectKnife = inflect('knife', 'knives')
// etc
Now, as helpful as this is, it is not a proper solution should you need internationalization. Treat this is a helper function for those instances this can support.
Kyle Shevlin is the founder & lead software engineer of Agathist, a software development firm with a mission to build good software with good people.