2017-04-20 72 views
1

我試圖安慰記錄所有從1到10的數字之和(在我的console.log看到和我通話的功能),但我只是難倒。使用函數返回數組的總和?我堅持

在我的第一個功能,我做了這樣的陣列將填補起來,在任何我設置開始和結束之間的打印出來的一切。我不知道如何返工和功能進行的console.log給我55(所有的數字1到10之間的總和)

a = []; 

var range = function(start, end) { 
    for (j=start;j<=end;j++) { 
    a.push(j); 

    } 
    return a; 
} 

var sum = function(array) { 
    var array = a; 
} 



console.log(sum(range(1, 10))); 

就像我說的,這是一個的給我的麻煩求和函數。我很難在這個小程序的背景下如何使它工作。

+0

的可能的複製[如何找到一個數組數組的總和](http://stackoverflow.com/questions/1230233/how-to-find這是一個數組的總和) –

+0

爲什麼'sum'中的唯一語句會破壞傳入的數組參數? - 提示...'array.reduce((a,b)=> a + b)' –

回答

0

您應該能夠使用減速功能

var a = []; 
 
    
 
var range = function(start, end) { 
 
    for (j=start;j<=end;j++) { 
 
    a.push(j); 
 

 
    } 
 
    return a; 
 
} 
 

 
var sum = function(array) { 
 
    return array.reduce(function(a, b) { 
 
    return a + b; 
 
    }) 
 
} 
 

 
alert(sum(range(1,10)))

看到這裏Array.reduce MDN

1

就像我說的,這是一個的給我的麻煩之功能。

你需要的array中添加的所有號碼,然後返回結果:

a = []; 
 

 
var range = function(start, end) { 
 
    for (j=start;j<=end;j++) { 
 
    a.push(j); 
 

 
    } 
 
    return a; 
 
} 
 

 
var sum = function(array) { 
 
    var result = 0; 
 
    for(var i = 0; i < array.length; i++) result += array[i]; 
 
    return result; 
 
} 
 

 
console.log(sum(range(1, 10)));

0

使用reduce()添加array項目。請嘗試以下操作:

a = []; 
 
var range = function(start, end) { 
 
    for (j=start;j<=end;j++) { 
 
    a.push(j); 
 
    } 
 
    return a; 
 
} 
 
var sum = function(array) { 
 
    return array.reduce(function(sum, item){ 
 
    return sum + item; 
 
    },0) 
 
} 
 

 
console.log(sum(range(1, 10)));
.as-console-wrapper { max-height: 100% !important; top: 0; }

-1

您可以使用map到陣列中的所有項目,如運行的函數:

var a = []; 
 
    
 
var range = function(start, end) { 
 
    for (j=start;j<=end;j++) { 
 
    a.push(j); 
 

 
    } 
 
    return a; 
 
} 
 

 
var sum = function(a) { 
 
    var accum = 0; 
 
    a.map(function(item) { 
 
    accum += item; 
 
    }); 
 
    return accum; 
 
} 
 

 
console.log(sum(range(1,10)))