
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メソッドが理解できていれば、各桁を加算していることがわかりやすいので、こちらを使用することをオススメします。