如何清理此代码并更加雄辩地编写代码?

时间:2017-08-13 02:47:41

标签: javascript function reduce higher-order-functions map-function

我正在使用高阶函数解决一些练习问题,而我能够解决这个问题。我不禁想到这段代码很丑陋而且不是最有说服力的代码。有没有办法结合地图和减少比我做的更干净的方式?另外,我可以在这里使用任何其他方法或改进吗?我只是想要变得更好,任何反馈都会受到赞赏。

问题:给定一个数字,“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);

1 个答案:

答案 0 :(得分:0)

如果转换为reduce中的数字,则根本不需要使用地图。在这里,我使用unary + operator将字符串转换为数字而不是Number构造函数,但这并不比Number构造函数更好,只是习惯:

this