我有这整数 75892 。我想将它拆分为个人,然后在下面添加我的代码。它工作正常,但有没有其他解决方案来最小化我的代码?谢谢
var x=75892;
var d,ans=0;
while(x!=0){
d=x%10;
ans=ans+d;
x=parseInt(x/10);
}
document.write("SUM:"+ans);
答案 0 :(得分:1)
除了parseInt
部分之外,这种方法很好。 parseInt
将首先将数字转换为字符串,然后解析该字符串。你想要Math.floor
:
x = Math.floor(x / 10);
您也可以使用+=
,一般情况下您可以使用以下几种快捷方式:
var x = 75892;
var ans = 0;
while (x != 0) {
ans += x % 10;
x = Math.floor(x / 10);
}
document.write("SUM:" + ans);
另一种方法是通过数字,例如基于字符串的方法而不是基于数学的方法。但坦率地说,我认为这不会更好。
答案 1 :(得分:0)
var x="" + 75892;
var sum = 0;
for( var i = 0; i < x.length; i++ )
{
sum += parseInt( x[i] );
}
console.log( "sum: " + sum );
请尝试一次。
答案 2 :(得分:0)
使用,请查看Sum of a string of one-digit numbers in javascript?
var sum = function(a,b){return a+b}
function stringSum(s) {
var int = function(x){return parseInt(x,10)}
return s.split('').map(int).reduce(sum);
}
document.write(stringSum("75892"))
答案 3 :(得分:0)
你想要更短 - 这是一个单线ES6版本:
var ans = [...(String(x))].map(Number).reduce((p, c) => p + c);
对x
的字符串化版本使用spread
,将其转换为数字,然后使用reduce
对数字求和。
答案 4 :(得分:0)
以下代码是,当我在大学时代被认为,现在与你分享。 美丽没有循环。
var x=75892;
var d,ans = 0;
x = parseInt(x);
if(x < 0){
x = -1 * x;
}
if(x > 0){
d = x % 9;
if(d == 0){
ans = 9;
}else{
ans = d;
}
}
document.write("SUM:"+ans);
答案 5 :(得分:0)
您只需要拆分变量 -
var x=75892;
var arr = x.split('');
var count=0;
for (var i=arr.length; i--;) {
count = count+parseInt(arr[i]);
}
答案 6 :(得分:0)
如果你问的是否有更聪明的方法,而不仅仅是在最后剥掉数字,那么不 - 至少不在十进制系统中。
除非您想减少到一位数(例如75892 - > 31 - > 4),否则
function(d){
if(d === 0){
return 0;
}
var m = d%9;
return m === 0 ? 9 : m;
}
会做的伎俩