如何在Javascript中将数字拆分为数字?

时间:2015-05-04 08:38:22

标签: javascript

我想将一个数字拆分成数字(例如4563到4,5,6,3)然后成瘾这个数字。 (例如:4 + 5 + 6 + 3 = 18)

我可以单独编写3位数或2位数的代码和...数字,但我不能为每个数字写一个全局代码。

所以这是我的2位数字代码:

var a = 23
var b = Math.floor(a/10); // 2
var c = a-b*10; // 3
var total = b+c; // 2+3
console.log(total); // 5

这是我的3位数字代码:

var a = 456
var b = Math.floor(a/100); // 4
var c = a-b*100; // 56
var d = Math.floor(c/10); // 5
var e = c-d*10; // 6
var total = b+d+e; // 4+5+6
console.log(total); // 15

但我无法编写代码来处理每个数字。如何为每个数字编写全局代码?

8 个答案:

答案 0 :(得分:5)

在现代浏览器中,您可以执行类似

的数组操作
var num = 4563;
var sum = ('' + num).split('').reduce(function (sum, val) {
    return sum + +val
}, 0)

演示:Fiddle

首先创建数组数字,然后使用reduce来汇总数组中的值

答案 1 :(得分:3)



var num = 4563;
var sum = 0;
while(num > 0) {
  sum += num % 10;
  num = Math.floor(num / 10);
}
console.log(sum);




答案 2 :(得分:0)

此解决方案将数字转换为字符串,将其拆分为字符并在回调函数中处理它们(prev是前一次调用的结果,current是当前元素):

var a = 456;
var sum = a.toString().split("").reduce(function(prev, current){
    return parseInt(prev) + parseInt(current)
})

答案 3 :(得分:0)

数字%10(模数)然后数字/ 10(除数)直到数字不为0

答案 4 :(得分:0)

我希望以下示例对您有用:

var text="12345";
var total=0;
for (i=0;i<text.length;i++)
{
  total+= parseInt(text[i]);
}    
alert(total);

答案 5 :(得分:0)

以下是我如何处理这个问题。我使用的技巧是拆分空字符串以将字符串转换为数组,然后在数组上使用reduce

function digitSum(n) {
    // changes the number to a string and splits it into an array
    return n.toString().split('').reduce(function(result, b){
        return result + parseInt(b);
    }, 0);
}

正如其他一些海报(我的评论者的小贴士)所提到的,这个问题还有其他几个很好的答案。

答案 6 :(得分:0)

以下是使用ES6箭头功能作为回叫的解决方案。 - 将数字转换为字符串。 - 将字符串拆分为数组。 - 在该数组上调用map方法。 - 回调函数将每个数字解析为数组。

let number = 65535;

//USING MAP TO RETURN AN ARRAY TO DIGITS
let digits = number.toString()
                    .split("")
                    .map(num => parseInt(num));
//OUTPUT TO DOM
digits.forEach(
  digit => 
  document.querySelector("#out").innerHTML += digit + "<br>"
);
<p id="out"></p>

答案 7 :(得分:0)

1)您可以使用.toString()方法将输入数字转换为字符串,并使用spread(...)运算符将其展开为数组

const splitNumber = n => [ ...n.toString() ]

2)另一种简短的方法 - 使用基于递归的解决方案,如:

const splitNumber = n => n ? [ ...splitNumber(n/10|0), n%10 ] : []