我想将一个数字拆分为数字(例如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>