最近在写前端项目,存在这样一个需求,后端接口返回一个阿拉伯数字,但是我在前端需要展示成中文。

首先监于这是排行榜数据,类似于xx区xx榜第一名,xx区xx榜第二名,我认为数字范围不会很大,我的js代码如下:

// 10以内的阿拉伯数字转中文
fucntion(num) {var chnNumChar = ["零","一","二","三","四","五","六","七","八","九"];// 后端传过来的是字符串,例如'1'、'6'等num = parseInt(num);return chnNumChar[num];
}

第二天上测试环境,有的榜单数据显示:

这很明显榜单排名达到了两位数,于是只能继续改成这样

// 100以内的阿拉伯数字转中文
function(num) {var chnStr,chnNumChar = ["","一","二","三","四","五","六","七","八","九", '十'];num = parseInt(num);if(num <= 10) {chn = chnNumChar[result.rkvalue];} else if(num > 10 && num < 20) {chn = '十' + chnNumChar[num - 10];} else if(num >= 20) {chn = chnNumChar[Math.floor(num/10)] + '十' + chnNumChar[num % 10];}return chnStr;
}

到了第三天早上,是这个样子的

好吧,榜单大概是出现了三位数。。。于是,为了一劳永逸,最后的代码改成了这个样子:

// 阿拉伯数字转中文汉字
var numberToChinese = function() {var chnNumChar = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"],chnUnitSection = ["", "万", "亿", "万亿", "亿亿"],chnUnitChar = ["", "十", "百", "千"];function sectionToChinese(section) {var strIns = '',chnStr = '',unitPos = 0,zero = true,v;while (section > 0) {v = section % 10;if (v === 0) {if (!zero) {zero = true;chnStr = chnNumChar[v] + chnStr;}} else {zero = false;strIns = chnNumChar[v];strIns += chnUnitChar[unitPos];chnStr = strIns + chnStr;}unitPos++;section = Math.floor(section / 10);}return chnStr;}return function (num) {var unitPos = 0,strIns = '',chnStr = '',needZero = false,section;num = parseInt(num);if (num === 0) {return chnNumChar[0];}while (num > 0) {section = num % 10000;if (needZero) {chnStr = chnNumChar[0] + chnStr;}strIns = sectionToChinese(section);strIns += (section !== 0) ? chnUnitSection[unitPos] : chnUnitSection[0];chnStr = strIns + chnStr;needZero = (section < 1000) && (section > 0);num = Math.floor(num / 10000);unitPos++;}return chnStr;}
}();

顺带说一下,以上均不涉及ES6语法,大概是兼容性把我搞怕了。。

另外命名遵循单一var模式。

记一次阿拉伯数字转中文的JavaScript实现相关推荐

  1. JavaScript实现阿拉伯数字转中文数字

    JavaScript实现阿拉伯数字转中文数字 项目场景: 解决方案 项目场景: 项目相关背景: 阿拉伯数字转中文数字,例如123,转为一百二十三 解决方案 function intToChinese ...

  2. javascript 阿拉伯数字转中文

    javascript 阿拉伯数字转中文:单独处理一十情况 export const numberToChinese = (num) => {if (isNaN(parseInt(num))) { ...

  3. 阿拉伯数字跟中文汉字互转js

    有些时候需要用到阿拉伯数字转中文汉字的需求,阿拉伯数字在代码上比较好操作,比如++,–等操作,加上jsp里的foreach标签,status里可以知道当前行号,但是页面需要显示中文汉字,如第1阶段,第 ...

  4. 金额阿拉伯数字转换为中文大写

    最近的做项目中需要弄一个金额是阿拉伯数字转为中文大写的金额,自己偷懒了,就总结一下. 第一种方法相对复杂 private static readonly String cnNumber = " ...

  5. php 数字转中文函数 1转一,一个阿拉伯数字转中文数字的函数-PHP教程,PHP函数

    最近因需要,写了个"阿拉伯数字转中文数字的函数".搜索了精华区只见到一个类似的. 感觉到我的算法不错,所以贴出来共享一下 如果要用于金额的转换,对小数部分的处理要做一下修改 fun ...

  6. 制打印如下所示的n行数字金字塔_一日一技:在Python中实现阿拉伯数字加上中文数字...

    在Python 3里面,中文是可以作为变量名的,而运算符又可以重载,基于这两个特性,我们可以实现阿拉伯数字与中文数字的四则运算. 首先我们定义一个类 Num: class Num(object): d ...

  7. 大写汉字转阿拉伯数字c语言,阿拉伯数字转中文数字方法详解(C++实现)

    阿拉伯数字与中文数字没有一一对应关系,不存在直接转换的公式化算法,因此需要根据两种数字体系的特点精心构造转换算法. 中文计数有一个特点,就是"零"的使用变化多端.阿拉伯数字中数字的 ...

  8. 阿拉伯数字转中文大(小)写的函数

    <? //chinese_money.php //Changing Arab Money Num to Chinese Money Num /*====================== Fu ...

  9. 一个阿拉伯数字转中文数字的函数

    最近因需要,写了个"阿拉伯数字转中文数字的函数".搜索了精华区只见到一个类似的. 感觉到我的算法不错,所以贴出来共享一下如果要用于金额的转换,对小数部分的处理要做一下修改 < ...

最新文章

  1. 面试官:说说一条查询sql的执行流程和底层原理?
  2. 四年C++老炮,转攻Python实践分享
  3. oracle xtts 介绍,oracle_rman_xtts_v3
  4. 【c++版数据结构】之循环单链表的实现(带头结点以及尾节点)
  5. .NET开发者常会忽略的几个错误
  6. 华为怎么升级Android11,华为EMUI 11/安卓11升级名单曝光 快来看看你的手机是否支持...
  7. 计算机应用基础形成性考核作业,计算机应用基础形成性考核作业1
  8. 【clickhouse】未解决 ClickHouse exception, code: 1002 DB::Exception: Directory already exists
  9. for循环执行 mybatis_MyBatis 插件机制详解
  10. 剑指offer——面试题17:合并两个排序的链表
  11. VAV系统类毕业论文文献都有哪些?
  12. Admob激励视频广告(rewarded ad)的服务器端验证(server-side )的疑问
  13. 基于jQuery+cookie的视频断点续播
  14. 2019xman-shellmaster wp
  15. cs1.5最新服务器地址,CS1.5服务器连接常见问题解决
  16. sklearn cheat sheet
  17. empty 和 isset 的区别
  18. 9.DNS和DNSmasq服务
  19. 抓包工具 charles 在线破解方法,支持4.2.6版本
  20. 编写河北大学官网界面

热门文章

  1. zcmu-1957: 乌鸦坐飞机
  2. 常用的函数:atoi,itoa,atof,_ttoi等
  3. java初学求一个数的绝对值
  4. 聚类分析及R编程实现
  5. Java操作Word转PDF(Word转图片)
  6. APP 专项测试之兼容性测试
  7. 【Yolo】Jetson Orin Nano下部署 YoloV5
  8. 【转】使用cocosbuilder在cocos2d-…
  9. 民营企业如何设置绩效考核指标的标准
  10. 谷歌地图-Google Map