Я работаю над некоторыми практическими задачами с использованием функций высшего порядка, и пока мне удалось решить эту задачу. Я не могу не думать, что этот код уродлив и не самый красноречивый, какой мог бы быть. Есть ли способ объединить карту и уменьшить - более чистый способ, чем я сделал? Кроме того, есть ли какие-либо другие методы или улучшения, которые я мог бы здесь использовать? Я просто хочу стать лучше, и любой отзыв будет оценен.
Проблема: задано число, функция "sumDigits" возвращает сумму всех его цифр. Если число отрицательное, первая цифра должна считаться отрицательной.
function sumDigits(num) {
//create array of number char
var string = num.toString().split('');
//if first char is negative symbol let the first numeric element be negative
if (string[0] === "-") {
string[1] = '-' + string[1];
string.shift();
}
//convert string to int
var toInteger = string.map(function(x) {
return Number(x);
});
//get sum
return toInteger.reduce(function(sum, current) {
sum += current;
return sum;
})
}
sumDigits(-316);