我正試圖創建一個函數來對數組中的所有數進行求和!我是JavaScript新手,需要有人指引我朝着正確的方向發展!總結數組函數中的所有數字不返回總和
function sum(arr) {
var i = 0;
for (var index = 0; index < arr.length; index++) {
return index += arr[i];
}
}
sum([1, 2, 3]); //6
我正試圖創建一個函數來對數組中的所有數進行求和!我是JavaScript新手,需要有人指引我朝着正確的方向發展!總結數組函數中的所有數字不返回總和
function sum(arr) {
var i = 0;
for (var index = 0; index < arr.length; index++) {
return index += arr[i];
}
}
sum([1, 2, 3]); //6
使用Array.reduce()爲:
function getSum(ary){
return ary.reduce(function(sum, value) {
return sum + value;
}, 0);
}
console.log(getSum([0, 1, 2, 3]));
謝謝!我必須寫作一個函數,使用一個參數(ARR - 一個整數數組) –
@MarioGomez然後把代碼放在一個函數中。這是正確的答案 – baao
@MarioGomez好的,那麼更新的答案如何? –
,說明您的代碼是錯誤的
function sum(arr) {
var i = 0;
for (var index = 0; index < arr.length; index++) {
return index += arr[i]; // this will return from your function in the first iteration
}
}
的評論說,在循環後將退出你的函數在第一次迭代
也,你加入index
,這應該是索引到數組,你要添加到i
,然後return i
所以,代碼應該是
function sum(arr) {
var i = 0;
for (var index = 0; index < arr.length; index++) {
i += arr[index];
}
return i;
}
作爲另一個答案指出,一個可能是更好的替代方法是使用數組減少功能 - 但是,在這個問題的答案的代碼是不是「最好」的使用減少
function getSum(ary){
return ary.reduce(function(sum, value) {
return sum + value;
}, 0);
}
實際可寫入的
function getSum(ary){
return ary.reduce(function(sum, value) {
return sum + value;
});
}
這少使用一個迭代,因爲沒有「初始值」,並在第一次迭代增加了指數在0和1一起
當然,它不會爲了使性能有所不同,但爲何不能正確使用內置功能:p
謝謝@ jaromanda x !!我在Javascript中成爲begginer!你的解釋很有意義! –
*「但爲什麼不能正確使用內置功能」*使用我所具有的功能並非不恰當。順便說一下,它直接來自MDN。 –
對不起,「不適當」太苛刻了@ScottMarcus - 後面的例子'[0,1,2,3,4] .reduce((prev,curr)=> prev + curr);'顯示沒有初始值value:p –
許多與代碼有關的基本問題。
您需要一個單獨的變量來累計結果。您的代碼正在寫入for循環的索引變量。這有幾個原因是錯誤的。
您也會在循環的第一次迭代之後返回。
假設你想使用一個for循環(這是不是最少的代碼量),
function sum(arr) {
var sum = 0;
for (var index = 0; index < arr.length; index++) {
sum += arr[index];
}
return sum;
}
這裏是你如何讓你的函數工作:
function sum(arr) {
// this is the variable we're going to add our numbers onto
var acc = 0;
for (var index = 0; index < arr.length; index++) {
// don't return here, return is used to return from a function
acc += arr[index];
}
// after adding all numbers, return the sum
return acc
}
sum([1, 2, 3]); //6
但有建在像這樣做的方式,像像斯科特馬庫斯提到的Array.reduce()。
function Sum(arr) {
var sum = 0;
for (var index = 0; index < arr.length; index++) {
sum += arr[index];
}
return index;
}
Sum([1, 2, 3]); //6
返回立即退出函數。你的代碼永遠不會總結數值。你的代碼中'我'是什麼!?!什麼指標做!?
'無論如何,使用大寫字母作爲函數名稱的第一個字符** ** no ** - 「約定」使用大寫字母作爲「類別」名稱......也就是應該被調用的函數與'新'關鍵字 - 這只是一個約定 –
也許你是對的,我是C程序員,所以功能意味着其他在我的pov。 – BlackMB
'C'是否具有函數的個案約定?我知道這不是一個「規則」,考慮到「C」程序的入口點是「main」而不是「Main」:p –
'return'退出函數,而不是循環..此外,您將添加到'index'而不是'i',並且使用'i'作爲索引'',這是'0'處的stcuk –