如何在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

但是我不能编写一个代码来使用每个数字。我如何为每个数字编写一个全局代码?

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

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

演示:小提琴

首先创建一个数字数字的位置,然后使用Reled总结数组中的值

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

do number%10(模量),然后数字/10(除法)直到数字不是0

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

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

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

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

这是我如何解决问题的方式。我使用的技巧是在空字符串上拆分以将字符串转换为数组,然后在数组上使用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);
}

正如其他几个海报(给我的评论者的帽子提示)所述,此问题还有其他一些好的答案。

这是我的解决方案,使用ES6箭头函数作为回电。 - 将数字转换为字符串。 - 将字符串分为数组。 - 调用该数组上的地图方法。 - 回调函数将每个数字解析为数组。

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>

1)您可以使用.toString()方法将输入号码投入字符串,然后将其扩展到vread(...)操作员

的数组中
const splitNumber = n => [ ...n.toString() ]

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

const splitNumber = n => n ? [ ...splitNumber(n/10|0), n%10 ] : []
<div style="text-align:center; margin:auto;">
This script limits the number of characters in the INPUT field to those specified in the QUANT field.
<form>
<input name="" type="number" id="quant" value = "" style="padding:6px; margin:0.8em;" /><br />
<input name="" type="number" id="input" oninput="calc()" style="padding:6px;  margin:0.8em;" /><br />
<input type="reset" style="width:150px;padding:8px; margin:0.8em;">
</form>
<div id="digit"></div><br />
<script>
let input;
let out = '';
let total = '';
let quant = "";
function calc(){
  quant = document.getElementById('quant').value;
  input = document.getElementById('input').value;
  total = input.split('');
  if(total.length > quant){
      document.getElementById('input').value = "";
      for(i=0; i < quant; i++){
          document.getElementById('input').value += total[i];
      }
}
out = total.length - 1;
if(out < 0){
   out = 0;
}
document.getElementById('digit').innerText = "Quantity: " + out;
}
</script>

最新更新