pluralize - 基于输入数字返回单词的单数或复数形式
优质
小牛编辑
130浏览
2023-12-01
基于输入数字返回单词的单数或复数形式。如果第一个参数是一个 object
,那么它将使用一个闭包来返回一个函数,该函数可以自动实现多个单词,如果所提供的字典包含这个单词,它不会简单地以 s
结尾。
如果 num
为 -1
或者 1
,返回单词的单数形式。如果 num
是任何其他数字,返回复数形式。忽略第三个参数 plural
,默认使单词 + s
,或在必要时提供自定义的复数单词。如果第一个参数是一个 object
,则通过返回一个函数来使用闭包,该函数可以使用提供的字典来解析单词的正确复数形式。
const pluralize = (val, word, plural = word + 's') => { const _pluralize = (num, word, plural = word + 's') => [1, -1].includes(Number(num)) ? word : plural; if (typeof val === 'object') return (num, word) => _pluralize(num, word, val[word]); return _pluralize(val, word, plural); };
pluralize(0, 'apple'); // 'apples' pluralize(1, 'apple'); // 'apple' pluralize(2, 'apple'); // 'apples' pluralize(2, 'person', 'people'); // 'people' const PLURALS = { person: 'people', radius: 'radii' }; const autoPluralize = pluralize(PLURALS); autoPluralize(2, 'person'); // 'people'