Javascript 循环代码 returns 'undefined'

Javascript looping code returns 'undefined'

我正在尝试创建一个函数(称为 difference),该函数将找出数字数组的总和与(其最大值 * 数组中的项目数)之间的差值。我尝试了以下方法,但它一直返回未定义!有帮助吗?

function difference(randomArray){

  var origSum = function () {
    var sum = 0;
    for (var i = 0; i < randomArray.length; i++ ) {
      sum += randomArray[i]
    };
    return sum;  
  };

  var maxi = function () {  
    var max = 0
    for (var x = 0; x < randomArray.length; x++) {
      if (randomArray[x] > max) {
        max = randomArray[x]
      };
    };
    return max;
  };

  var sum = function () {
    return ((maxi * randomArray.length) - origSum)
  };

  if (randomArray.length <= 1) {
    return (1 - 2)
  } 
  else {
    return sum
  };
};

maxi、origSum 和 sum 是函数。你需要这样称呼它们,包括括号。

function difference(randomArray){

  var origSum = function () {
    var sum = 0;
    for (var i = 0; i < randomArray.length; i++ ) {
      sum += randomArray[i]
    };
    return sum;  
  };

  var maxi = function () {  
    var max = 0; // What if all array values are negative? 
    for (var x = 0; x < randomArray.length; x++) {
      if (randomArray[x] > max) {
        max = randomArray[x]
      };
    };
    return max;
  };

  var sum = function () {
    return ((maxi() * randomArray.length) - origSum())  // < here
  };

  if (randomArray.length <= 1) {
    return (1 - 2)  // This is weird ?
  } 
  else {
    return sum(); // < and here
  };
};

顺便说一句,还有一些缺点。如果数组中的所有值都是负数,maxi 将 return 0 而不是最大值。最后,return (1 - 2) 总是 return -1,而如果数组包含 1 个项目,您可能想要 return 唯一的数组值。

在您的 sum 函数中,您试图将一个函数乘以另一个函数,您必须实际调用这些函数,并在脚本末尾调用 sum 函数:

var sum = function () {
    return ((maxi() * randomArray.length) - origSum())
};

并且:

return sum();