2017-11-18 20 views
0

私は関数内で.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; 
} 
+0

? – charlietfl

答えて

1

質問は

代わりの和のinvoke CBを返すと、そこに合計で渡すと言います。

は、cb(sum)を意味します。このコールバックを使用すると、他のものを行うことができます。ここで

は一例です:

あなたも `sumArray()`を呼び出すん

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は、おそらく最初の引数として配列を渡していて、まだ宣言していないresultを2番目の引数として渡しているだけで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; 
} 
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));

関連する問題