JavaScriptで各桁の和の計算はreduceを使うと短く書ける

JavaScriptで各桁の和を計算

JavaScriptで各桁の和の計算処理が必要なことがたまにある。

昔からよく見かけるのは「n % 10」で1桁目を加算して、Math.floor(n / 10)で切り捨てて各行を計算する処理です。

function digitSum(n) {
  let sum = 0
  while (n > 0) {
    sum += n % 10
    n = Math.floor(n / 10)
  }
  return sum
}

console.log(digitSum(1234))
// 10

しかし、JavaScriptにはreduceという便利なメソッドがあるので、これを使用して各桁を加算すれば関数内は2行のコードで済みます。

function digitSum(n) {
  const nums = String(n).split('').map(Number)
  return nums.reduce((a, c) => a + c)
}

console.log(digitSum(1234))
// 10

後者のほうがreduceメソッドが理解できていれば、各桁を加算していることがわかりやすいので、こちらを使用することをオススメします。