<aside> 💡 本文记录于2023年9月19日,因为为了学习如何做好独立开发,所以之前转开发做了两个月的前端。本次将这部分笔记同步到公众号上。本文仅适合前端新手阅读。
</aside>
今天接到一个bug,当页面的数据为0的时候,字段展示了复数,比如如下:
There are 0 services in this vendor
所以要针对一些数据的字段做复数化处理,当数据为0/1的时候,就不展示“s”,超过1展示”s”
最简单的想法是,我直接封装一个方法,用if/else来判断一下
export const resultWord = (resultTotal: number) => {
if (resultTotal === 0 || resultTotal === 1) {
return '';
} else {
return 's';
}
};
但是这个方案的缺点是,英文的复数有很多种情况,例如有的单词的复数是”es的形式”
然后我开始找三方库来解决这个问题,最初是搜到了掘金上的这篇文章:
用i18next来实现复数化
但是文章里的配置对我的使用场景来说,有一些复杂,因为我不需要做国际化的复数化,只针对英文的复数化
GitHub - plurals/pluralize: Pluralize or singularize any word based on a count
在问了chatGPT4之后,找到了这个更简单的方案: