【问题标题】:Get sum of array and callback a function inside another function获取数组的总和并在另一个函数中回调一个函数
【发布时间】:2018-05-01 20:59:29
【问题描述】:

我正在尝试解决一个问题,我必须在函数内使用 .reduce() 方法获取数组的总和,而不是返回总和,我需要调用回调并将总和传递到那里。

我很确定我正确地使用了 .reduce() 但我不断得到“未定义”,而且,在我的一生中,我无法弄清楚如何在函数中调用函数。

任何帮助/解释将不胜感激!

问题:对 numbers 数组中的所有整数求和。 而不是返回总和调用 cb 并在那里传递总和。

我的代码:

function sumArray(numbers, cb) {
  //code here

  numbers.reduce(function(sum, currentValue) {
    return sum + currentValue;
  }, 0);

  cb([1, 2, 3, 4, 5], result);

}

function addTwo(num) {
  const result =  num + 2;
}

【问题讨论】:

  • 你在哪里打电话给sumArray()

标签: javascript arrays function methods callback


【解决方案1】:

我想这是你的作业,所以我不想透露太多,但这里有几点建议。

numbers.reduce(function(sum, currentValue) { 正在计算总和但不存储它。你想要var reduced = things.reduce(...)之类的东西。

另外,cb 可能期望只传递一个参数,即总和,因为您当前正在传递一个数组作为第一个参数,result(您尚未声明)作为第二个参数。

【讨论】:

    【解决方案2】:

    这里有问题
    1. 您的 reduce() 函数需要将其输出返回给您的结果变量。您没有将输出返回给结果变量,也没有定义结果变量。
    2. 如果 addTwo() 函数是回调函数,那么你应该传入一个变量。但是由于您没有指明 cd 回调的目的地,我猜您没有将它包含在代码示例中。这样做;

    function sumArray(numbers, cb) {
    
     var result=numbers.reduce(function(sum, currentValue) {
        return sum + currentValue;
     }, 0);
    
     cb([1, 2, 3, 4, 5], result);
    
    }
    
    function addTwo(num) {
     const result =  num + 2;
    }
    

    【讨论】:

      【解决方案3】:

      嗯,我猜你一定是在尝试做类似的事情。

      1. 您必须存储reduce return。
      2. 您必须返回回调函数。

      要访问内部回调,您必须返回回调。

      function sumArray(numbers, cb) {
        //code here
        let result = numbers.reduce(function(sum, currentValue) {
          return sum + currentValue;
        }, 0);
      
        return cb([1, 2, 3, 4, 5], result);
      
      }
      
      function sumTwo(arr, num) {
      	return  Number(num + 2);
      }
      
      console.log(sumArray([1, 2, 3, 4, 5], sumTwo));

      【讨论】:

        【解决方案4】:

        问题说

        而不是返回总和调用 cb 并在那里传递总和。

        表示cb(sum),仅此而已。有了这个回调,人们可以做其他事情。

        这是一个例子:

        var numbers = [1, 2, 3, 4, 5];
        
        function sumArray(numbers, cb) {
          var sum = numbers.reduce(function(sum, currentValue) {
            return sum + currentValue;
          }, 0);
          cb(sum);
        }
        
        function outputSum(sum) {
          console.log("The sum is " + sum);
        }
        
        function addTwo(sum) {
          console.log(sum + 2);
        }
        
        sumArray(numbers, outputSum);
        sumArray(numbers, addTwo);

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-05-19
          • 2017-12-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-22
          • 1970-01-01
          相关资源
          最近更新 更多