簡體   English   中英

從字符串中添加單個負數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM