2017-11-18 121 views
0

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

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

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

问题:总结numbers数组中的所有整数。 而不是返回sum调用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; 
} 
+0

你在哪里,甚至调用'sumArray()'? – charlietfl

回答

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

1

这是,我认为,你的功课,所以我不想透露太多,但这里有几个指针。

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

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

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; 
} 
1

嗯,我想你一定是想做那样的事情。

  1. 您必须存储减少回报。
  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) { 
 
\t return Number(num + 2); 
 
} 
 

 
console.log(sumArray([1, 2, 3, 4, 5], sumTwo));

相关问题