js使用数组+循环+条件实现数字转换为汉字的简单方法。

更新日期: 2019-02-23 阅读: 4.1k 标签: 数组

一、单个数字转汉字的解决方法

1.利用数组存储0-9的汉字,代码如下:

<html>
    <head>
        <title>数字转换为汉字</title>
    </head>
    <body>
        <script type = "text/javascript">
            var ary = ["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"];
        </script>
    </body>
</html>

2.接着我们定义一个变量名为str的字符串,并赋值0,,代码如下:

var str = "0";

3.那么我们该怎么把0转换为零呢?使用“对号入座”算法,代码如下:

for(var i = 0;i < ary.length;i++)
{
    for(var j = 0;j < str.length;j++)
    {
      if(str.charAt(j) == i)
      {
          str = ary[i];
      }
    }
}

(1) ary.length和str.length不用多说,这是指ary数组和str字符串的长度。这里我们需要注意的是str.charAt(j)和ary[i],分别指在str这个字符串中索引为j的元素,在ary中索引为i的元素。

(2)在上面这段代码的意思是,从汉字数组的第一个元素开始循环字符串的每一个元素,如果字符串里有对应的数字和i相等,就把此时ary数组中索引为i的元素赋给str(因为索引刚刚好从0开始,所以0代表零)。最后我们只要把str打印出来就可以了。

 

二、多个数字的转换

从上面这段代码中,我们知道了如何将单个数字转换为汉字的方法,那么我们接下来就讲解多个数字转换为汉字的方法

1.在原有的代码上定义一个新的数组new_str来存储字符串的每个元素,代码如下:

var new_str = new Array(str.length);

2.将str = ary[i]改为new_str[j] = ary[i],代码如下:

new_str[j] = ary[i];

3.最后,只需要把数组打印出来就行了。

document.write(new_str);

然后博主发现一个问题,以上将1221打印为壹,贰,贰,壹,那么我们能不能把逗号去掉呢?可以的,只要写一个循环把数组打印出来,代码如下:

for(var i = 0;i < new_str.length;i++)
{
    document.write(new_str[i]);
}

最后打印出来的效果是壹贰贰壹。


三、上面的这些代码只是原样打印出来,能不能打印出“23 = 贰拾三”这种代码呢?当然可以

1.能不能根据23后面的所剩下的几位数,添加不同的汉字,例如23的2后面只剩下1位那么我就在贰后面加上拾,23的3后面没有数了,那就直接打印叁,那就试试看看,代码如下:

for(var i = 0;i < new_str.length;i++)
{
    switch(new_str.length - (i+1))
    {
        case 1:
        {
            new_str[i] += "拾";
            break;    
        }
        case 2:
        {
            new_str[i] += "佰";
            break;    
        }
        case 3:
        {
            new_str[i] += "仟";
            break;    
        }
            case 4:
        {
            new_str[i] += "万";
            break;    
        }
    }
}

以上代码我只写到了万。拾万,仟万,亿这些需要自己添加下去,所以对可以转换的数字只限制在10万以内。


最后做一下总结,上面这段代码可以把999打印为玖佰玖拾玖,但是会把800打印为捌佰零拾零,所以还是需要在switch()的case里面写一些判断的,这些需要读者们去自己加一些简单的逻辑判断。写这篇随笔的原因,是因为我TM也觉得有些人写得太复杂了,在考虑到只使用数组,循环和条件的前提下我想了这段逻辑比较合乎新手的代码来实现转换。其实我本来是想写一篇java的GC机制的随笔,但是里面涉及到的知识点有点多,只能慢慢写,所以我决定先写一篇关于为什么要配置java环境,还有关于在命令行使用javac和java的一些知识点。

来自:https://www.cnblogs.com/zemengcheng/archive/2019/02/22/10418536.html


本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://fly63.com/article/detial/2098

相关推荐

indexOf的三种使用方法

indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。这里基本用法大家一般都清楚,一般在实际工作中常与数组的方法合用来对数组进行一些操作

关于Vue不能监听(watch)数组变化

vue无法监听数组变化的情况,但是数组在下面两种情况下无法监听:利用索引直接设置数组项时,例如arr[indexofitem]=newValue;修改数组的长度时,例如arr.length=newLength

JS计算两个数组的交集、差集、并集、补集(多种实现方式)

使用 ES5 语法来实现虽然会麻烦些,但兼容性最好,不用考虑浏览器 JavaScript 版本,使用 ES5 语法来实现虽然会麻烦些,但兼容性最好,不用考虑浏览器 JavaScript 版本。也不用引入其他第三方库。

js数组中改变元素的位置:互换,置顶,上移,下移

unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。splice() 方法可删除从 index 处开始的零个或多个元素

Js遍历数组时注意 Empty Item 的影响

这两天碰到个问题:从日志中发现一些来自 iOS 10.3 的报错「Cannot read property \\\'xxx\\\' of undefined」,定位到代码的报错位置,发现是遍历某数组时产生的报错,该数组的元素应该全都是 Object,但实际上出现了异常的元素

JS数组扁平化(flat)方法总结

需求:多维数组=>一维数组 ;flat和flatMap方法为ES2019(ES10)方法,目前还未在所有浏览器完全兼容。第四种处理:用 reduce 实现数组的 flat 方法

数组、字符串去重

今天说的数组和字符串去重呢,主要用到es6新的数据结构 Set,它类似于数组,但是成员的值都是唯一的,没有重复的值,所以活用Set来进行数组和字符串的去重。

Js数组中所有方法(超详细)

concat()把元素衔接到数组中。 every() 方法使用指定函数检测数组中的所有元素:filter()返回满足断言函数的数组元素。forEach()为数组的每一个元素调用指定函数。

[译]async-await 数组循环的几个坑

在 Javascript 循环中使用 async/ await 循环遍历数组似乎很简单,但是在将两者结合使用时需要注意一些非直观的行为。让我们看看三个不同的例子,看看你应该注意什么,以及哪个循环最适合特定用例。

数组的push、unshift、pop、shift方法实现

push() 方法将一个或多个元素添加到数组的末尾,并返回该数组的新长度。从解释中可以看出,push方法只要将要添加的元素依次放到数组的最后即可

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!