2016-06-21 6 views
1

配列に数値を加え、その合計を返す関数を作成しようとしています。何らかの理由で、15の代わりに1が返されています。理由はわかりません。配列に数値を追加し、その合計をJavaScriptで返す関数を作る

var myArray = [1,2,3,4,5]; 
function addThemUp(myArray) { 
    var arrayTotal = myArray.length; 
    var totalSum = 0; 

    for(var x = 0; x <arrayTotal; x++) { 
     totalSum += myArray[x]; 
     return(totalSum) 
    } 
} 

addThemUp(myArray) 
+0

あなたはいくつかのコード – theblindprophet

+0

が欠けているように見えますおっと、ごめんなさい。ここに不足しているコードがあります: – Aaron

+2

あなたのリターンはforのためです。それで、それは一度実行され、返されます。ブーム。完了しました。その戻り値をFORループの外に移動します。 – durbnpoisn

答えて

2

あなたはforループ

var myArray = [1, 2, 3, 4, 5]; 

function addThemUp(myArray) { 

    var arrayTotal = myArray.length; 
    var totalSum = 0; 

    for (var x = 0; x < arrayTotal; x++) { 
     totalSum += myArray[x]; 
    } 
    return totalSum; 
} 

console.log("Sum of all elements: " + addThemUp(myArray)); 
+0

既に尋ねられています。はるかに良い解決策:http://stackoverflow.com/a/16751601/185672 – Phil

+1

私はOPのコードを実装し、あなたの答えを反映するようにコードを変更し、それは働いた。 –

+0

それが問題でした。私はforループで私のリターンを持っていました。助けをありがとう – Aaron

4

後に合計を返す必要がありますあなたは、ループ内returnステートメントを配置、それは最初の要素だけを合計してから戻ります。代わりに、あなたはそのが行われた後にのみループを完了させ、その和を返す必要があります:あなたのケースでは

function addThemUp (myArray) { 

    var arrayTotal = myArray.length; 
    var totalSum = 0; 

    for(var x = 0; x < arrayTotal; x++){ 
     totalSum += myArray[x]; 
    } 

    return(totalSum); // This is where the return should be 
} 
+1

それは間違いなく助けになりました。それが私の問題でした。 – Aaron

3

を、あなたは(あなたの関数の最後のステートメントであることを、totalSumのリターンがどこにあるか修正する必要がありますループの後)。言われて、あなたは、アレイ内のすべての数字を加算すると、削減して行うことを非常にクリーンかつ単純であることを見つけることが

function addThemUp(myArray) { 
 
    return myArray.reduce(function(a, b) { return a + b; }); 
 
} 
 

 
var myArray = [1, 2, 3, 4, 5]; 
 
console.log(addThemUp(myArray));

関連する問題