2017-11-30 1 views
-1

配列で2つの数字をとり、それらを最低から最高まで並べ、それらの間のすべての数の和を返すJavascriptコードを作成しました。だから、sumAll(1、4)//は1 + 2 + 3 + 4の和を10として返します。しかし、私がそれをすると、myのforループで変数totalは0から変化しません。Javascriptのforループが可変量を変更しないのはなぜですか?

var sumAll = function(arr) { 
    var lower = Math.min(arr[0], arr[1]); 
    var upper = Math.max(arr[0], arr[1]); 

    var total = 0; 

    for (var i = lower; i <= upper; i++) { 
    total += i; 
    } 
return total; 
} 

1及び4を使用した場合、このコードは10を返すべきであるが、私は手動で等しい10にVaRの合計を変更する= 0 VARの合計が、それはループのための私を意味する、10になるので、0を与えますそれはすべきことではありません。理由はわかりません。どんな助けでも大歓迎です、私はコードに新しいスーパーですし、しばらくの間これに取り組んできました。

また、これはTDDプロジェクトであるため、spec jsファイルに添付されています。だから、このコードの唯一の他の部分は、実際に私は配列を呼び出すのではなく、

module.exports = sumAll 

specファイルには、このために尋ねる:

var sumAll = require('./sumAll') 
describe('sumAll', function() { 
    it('sums numbers within the range', function() { 
expect(sumAll(1, 4)).toEqual(10); 
    }); 
+0

あなたは**どのように**機能を呼びますか? *編集*ああ私は今それを参照してください。あなたの関数が配列を期待するので、呼び出しは 'sumAll([1、4])'でなければなりません。 – Pointy

+0

はあなたの入力を表示します、 'arr'の中身は何ですか? –

+0

私はちょうど私のブラウザでコンソールにそれを実行し、10を返します。あなたは関数を呼び出すコードを投稿できますか? – Asher

答えて

0

あなたの質問内のコードがうまく機能し、しかし、まだあなたならばあなたがこれを試すことができる問題があります:

function sumAll(n1, n2) { 
    var numbers = []; 
    numbers.length = Math.abs(n2-n1)+1; numbers.fill(0); 
    numbers = numbers.map((i, j) => (Math.min(n1,n2)+j)) 
    return numbers.reduce((acc, i) => (acc+=i)) 
} 

sumAll(1,4); //10 
関連する問題