ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Javascript 序数:将 st、nd、rd 和 th 后缀添加到数字中

2022-11-06 14:08:23  阅读:285  来源: 互联网

标签:java 函数 学习 系统 语言 平台 方法 安装 QML c++ 数据


在Javascript中,通常被认为是处理绝对数字的最佳实践,因为绝对数字是一种定义的类型。但是,在用户界面中表示这些数字时,我们更有可能希望以不同的方式表达它们。例如,假设我有以下数字列表。我仍然想将它们存储为数字,但随后添加,,,或者在向用户显示它们时:numberndstrdth

let x = [ 1, 13, 22, 100, 1204, 133 ];

我当然可以手动执行此操作,并存储特定前缀的每个数字,或定义自定义规则,但这有点混乱 - 如果我需要支持多种语言怎么办。虽然在英语中我们写给代表的地方,但在其他语言中可能不一样。3rd3rd

幸运的是,Javascript中有一个解决方案-使用。这将根据区域设置定义复数规则:Intl.PluralRules

let plurals = Intl.PluralRules();
let x = plurals.select(0) // Returns "other"
let y = plurals.select(1) // Returns "one"
let z = plurals.select(2) // Returns "other"

默认情况下,配置为,这意味着任何大于 1 的内容都被视为复数。上面,如您所见,让我们区分一个数字是否是复数。PluralRulescardinalPluralRules

当我们将其设置为时,事情会变得更加有趣,这考虑到了我们使用数字的方式。在这里,它将告诉我们如何处理每个数字的特定语言规则 - 因此我们可以做一些事情,例如,和ordinal2nd3rd4th

const plurals = new Intl.PluralRules('en-US', { type: 'ordinal' });
let a = plurals.select(0); // Returns "other"
let b = plurals.select(1); // Returns "one"
let c = plurals.select(2); // Returns "two"
let d = plurals.select(3); // Returns "few"
let e = plurals.select(4); // Returns "other"

现在我们可以根据区域设置自定义输出,这样我们就不会遇到奇怪的问题。在这里,我们使用,但任何其他有效的区域设置也可以使用。要将我们的数字映射到,,,等,我们只需要创建一个这样的映射:en-US1st2nd3rd

let x = [ 1, 13, 22, 100, 1204, 133 ];

const plurals = new Intl.PluralRules('en-US', { type: 'ordinal' });

let pluralMapping = {
    "one" : "st",
    "two" : "nd",
    "few" : "rd",
    "other" : "th"
}

let y = [];
x.forEach((item) => {
    let getPlural = plurals.select(item);
    let pluralEnding = pluralMapping[getPlural]
    y.push(`${item}${pluralEnding}`)
})

console.log(y); // ['1st', '13th', '22nd', '100th', '1204th', '133rd']

标签:java,函数,学习,系统,语言,平台,方法,安装,QML,c++,数据
来源:

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有