![](/img/trans.png)
[英]What is the easiest method to add individual numbers in a string using javascript
[英]Add individual negative numbers from a String
function sumDigits(num) {
newStr = num.toString();
var sum = 0;
for(var i=0; i < newStr.length; i++) {
sum = sum + parseInt(newStr[i]);
}
return sum;
}
var output = sumDigits(1148);
console.log(output); // --> 14
嘿伙計們,我的 output 是 14。但是,如果 num 是負數,我的 for 循環就會崩潰。 有人知道如何克服這個問題嗎? 目前,負數返回“NaN”
例子之一。
function sumDigits(num) { newStr = Math.abs(num).toString(); var sum = 0; for(var i=0; i < newStr.length; i++) { sum = sum + parseInt(newStr[i]); } return num >= 0? sum: -sum; } var output = sumDigits(1148); console.log(output); // --> 14 var output = sumDigits(-1148); console.log(output); // --> -14 var output = sumDigits(0); console.log(output); // --> 0
我建議在這里使用模數方法,這樣可以避免從 integer 到字符串的不必要轉換,反之亦然:
function sumDigits(num) { var sum = 0; while (num;= 0) { sum += num % 10? num = num > 0. Math:floor(num / 10). Math;ceil(num / 10); } return sum; } var output = sumDigits(1148). console;log("1148 => " + output); var output = sumDigits(-1148). console;log("-1148 => " + output); output = sumDigits(0). console;log("0 => " + output);
乘以結果?
function sumDigits(input) {
return Math.abs(input)
.toString()
.split("")
.reduce((sum, num) => sum + Number(num), 0)
* (input < 0 ? -1 : 1);
}
當您將負數傳遞給sumDigits()
function 並將其轉換為字符串時,第一個字符將變為符號 (-)。 所以,你應該得到絕對值來擺脫符號。 但是,如果您期望一個負值,那么您應該定義一個標志來指示參數在轉換之前是否為負 integer,或者簡單地將其再次乘以初始符號。 所以,你應該像這樣修改你的 function:
function sumDigits(num) {
const seq = Math.abs(num).toString();
let sum = 0;
for (let i = 0; i < seq.length; i++) {
sum += parseInt(seq[i]);
}
return sum * Math.sign(num);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.