我正在使用高阶函数解决一些练习问题,而我能够解决这个问题。我不禁想到这段代码很丑陋而且不是最有说服力的代码。有没有办法结合地图和减少比我做的更干净的方式?另外,我可以在这里使用任何其他方法或改进吗?我只是想要变得更好,任何反馈都会受到赞赏。
问题:给定一个数字,“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);
答案 0 :(得分:0)
如果转换为reduce中的数字,则根本不需要使用地图。在这里,我使用unary + operator将字符串转换为数字而不是Number构造函数,但这并不比Number构造函数更好,只是习惯:
this