获取数组的总和并在另一个函数内回调函数

时间:2017-11-18 01:29:49

标签: javascript arrays function methods callback

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

我很确定我正在使用.reduce(),但我一直都没有定义'并且,对于我的生活,我无法弄清楚如何在函数内调用函数。

非常感谢任何帮助/解释!

问题:汇总数字数组中的所有整数。 而不是返回和调用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;
}

4 个答案:

答案 0 :(得分:1)

我认为这是你的作业,所以我不想放弃太多,但这里有几个指针。

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

之类的东西

同样cb可能只会传递1个参数,即总和,因为您当前正在将数组作为第一个参数传递而result(您尚未声明)第二个论点。

答案 1 :(得分:1)

以下是问题 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;
}

答案 2 :(得分:1)

好吧,我猜你一定要尝试做那样的事情。

  1. 您必须存储减少的回报。
  2. 您必须返回回调函数。
  3. 要访问内部回调,您必须返回回调。

    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));

答案 3 :(得分:1)

问题是

  

而不是返回和调用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);