2017-11-18 249 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));

相關問題