私は未定義になっています。コードは機能なしで動作します。私は間違って何をしていますか?javascript reduce undefined
var myArr = [ 1, 2, 3, 4, 5 ];
function getSums(arr) {
arr.reduce(a => a+1, 0);
}
document.write(getSums(myArr));
私は未定義になっています。コードは機能なしで動作します。私は間違って何をしていますか?javascript reduce undefined
var myArr = [ 1, 2, 3, 4, 5 ];
function getSums(arr) {
arr.reduce(a => a+1, 0);
}
document.write(getSums(myArr));
3つの問題は:アキュムレータ、および現在のエントリ:
reduce
を使用して、あなたは(少なくとも)最初の引数を使用します。 (それだけでなく、他の引数を持っていますが、最初の二つは、最も頻繁に使用されるものです。)
1
を追加しています、一緒に配列から値を加算していないa + 1
をやっていたそのエントリ。
あなたがリターンあなたgetSums
関数からreduce
によって返された値にする必要があります。
ので:
var myArr = [ 1, 2, 3, 4, 5 ];
function getSums(arr) {
return arr.reduce((sum, a) => sum + a, 0);
//^^^^^^ ^^^^ ^ ^^^^^^
}
console.log(getSums(myArr));
それとも、矢印構文を使用してgetSums
を定義することができ、あなたが簡潔な関数本体を使用する場合、戻りが暗示されるだろう:
var myArr = [ 1, 2, 3, 4, 5 ];
let getSums = arr => arr.reduce((sum, a) => sum + a, 0);
console.log(getSums(myArr));
あなたのラッパーは、 tを除いて。 – ftor
@ LUH3417: 'reduce' **のコールバックは常にアキュムレータを受け付けます。これは最初の引数です。これは合計演算であるため、この特定のケースでは '、0'を呼び出しから外すことができることは事実です。私は通常、それを持っていることの明快さを好むが、スタイルのことだ。 –
関数から 'return'する必要があります。 –
@nenadこれは矢印関数であり、デフォルトではその中にRETURNがありますか? –
'getSums'は矢印関数ではありません。 – JJJ