JavaScript奇偶分类程序问题:两位数显示拆分为两个元素
问题描述
我想写一个JavaScript程序,实现输入10个数字后按偶数、奇数分类展示成列表,但现在有个问题:两位数会被拆成两个元素显示,比如输入10时,页面会分别显示1和0,而不是完整的10。我已经谷歌搜索过,但没找到解决方案。
我的代码
<html> <head> <script language="Javascript"> document.write("<h1>Numbers List</h1><ol><li>Evens</li><ul>"); var i=0,evens=[],odds=[],number; while(i<10){ number=parseInt(prompt()) if(number%2==0){ evens+=[number]; } else{ odds+=[number]; } i=i+1; } //Here the numbers are separated between evens and odds i=0; while(i<evens.length){ document.write("<li>"+evens[i]+"</li>"); i=i+1; } i=0; document.write("</ul><li>Odds</li><ul>") while(i<odds.length){ document.write("<li>"+odds[i]+"</li>"); i=i+1; } document.write("</ul></ol>The total number of even numbers read has been: "+evens.length+"<br>"); document.write("The total number of even numbers read has been: "+odds.length); </script> </head> <body> </body> </html>
测试输入
1,2,3,4,5,6,7,8,9,10
输出结果
Numbers List Evens 2 4 6 8 1 0 //The 0 and 1 needed to be a 10 Odds 1 3 5 7 9 The total number of even numbers read has been: 6 The total number of even numbers read has been: 5
解决方案
问题根源在于数组的错误拼接方式:你用evens+=[number]和odds+=[number]的写法,会把数组强制转换成字符串再拼接,而非往数组中添加元素。比如添加10时,原本的[2,4,6,8]会变成字符串"2,4,6,8,10",后续用索引访问时,字符串会被当作字符数组处理,evens[4]取到的是"1",evens[5]取到的是"0",这就导致两位数被拆成单个字符。
只需把数组拼接改成push方法即可修复:
- 将
evens+=[number]替换为evens.push(number) - 将
odds+=[number]替换为odds.push(number)
修改后的核心代码片段:
while(i<10){ number=parseInt(prompt()) if(number%2==0){ evens.push(number); } else{ odds.push(number); } i=i+1; }
另外还有个小错误:最后一行输出的描述写错了,应该是奇数的总数,把The total number of even numbers read has been: "+odds.length改成The total number of odd numbers read has been: "+odds.length。
修改后,输入的10会作为完整数字存入数组,展示时不会被拆分。
内容的提问来源于stack exchange,提问作者A programmer
相关产品推荐
相关产品推荐

