2015-12-14 3 views
-3

У меня есть следующие:Как написать функцию, которая получает сумму массива (Javascript)

var numSum = function(set) { 
    for(i = 0, i < set.length, i++) { 
     var arrayValue = set[i]; 
     var totalValue = arrayValue + 
    } 
} 
numSum([1, 2, 3, 4]); 

Но я вернусь есть

Uncaught Синтаксис Error

. Что я делаю не так?

+1

'всего = set.reduce (функция (а, б) {возвращение + а + Ь;});' –

+1

Дубликат http://stackoverflow.com/questions/1230233/how-to-find- a-sum-of-the-array-of-numbers и http://stackoverflow.com/questions/3762589/fastest-javascript-summation – Zorgatone

ответ

4

Для необходимости петли ; не ,

Это должно быть

for(i = 0; i < set.length; i++) 

Shortcode из x=x+y является x+=y.

Но вы делаете это в неправильном формате.

Это должно быть

totalValue += arrayValue 

Если вы объявляете переменную внутри цикла она будет создавать каждый раз с петлей.

Объявление не входит в комплект поставки.

Как это

var totalValue=0; 
for(i = 0; i < set.length; i++) { 
     var arrayValue = set[i]; 
     totalValue+= arrayValue ; 
} 

вам не нужно объявить дополнительную переменную для хранения.

Попробуйте как этот

var numSum = function(set) { 
    var totalValue=0; 
    for(i = 0; i < set.length; i++) { 
     totalValue += set[i]; 
    } 
    return totalValue; 
} 
numSum([1, 2, 3, 4]); 

JSFIDDLE

Вы можете сделать это с помощью Array.prototype.reduce().

Попробуйте как этого

var sum = [1, 2, 3, 4].reduce(function(prev, curr) { return prev + curr; }); 

JSFIDDLE

+2

'prev',' curr' - 'pv',' cv' несоответствие имени. –

+0

@YeldarKurmangaliyev thanks –

1

требуются следующие изменения:

  1. инициализации totalValue вне цикла
  2. использовать оператор приращения присваивания правильно

Это должно быть

var numSum = function(set) { 
    var totalValue = 0; 
    for(i = 0, i < set.length, i++) { 
     totalValue += set[i]; 
    } 
} 
numSum([1, 2, 3, 4]); 
0

Есть опечатка ошибки

var numSum = function(set) { 
    for(i = 0; i < set.length; i++) { // replace ',' to ';' 
     var arrayValue = set[i]; 
     var totalValue += arrayValue; // += operator is short of totalValue = totalValue + arrayValue 
    } 
} 
numSum([1, 2, 3, 4]); 
-1

Вы получили "неперехваченную Синтаксическую ошибку" для этой строки

var totalValue = arrayValue + 

это должно быть

totalValue += arrayValue; 

Ваша функция numSum будет как

function numSum (set) { 
    var totalValue = 0; 
    for(i = 0, i < set.length, i++) { 
    totalValue += set[i]; 
    } 
    return totalValue; 
} 
numSum([1, 2, 3, 4]); 
-1
Try this: 
var numSum = function(set) { 
       var arrayValue = 0; 
       for(i = 0 ; i < set.length ; i++) { 
        arrayValue += set[i];      
       } 
       return arrayValue; 
      } 
      alert(numSum([1, 2, 3, 4])); 
1

Вы можете сделать это следующим образом.

var numSum = function(set) { 
    var arrayValue = 0; 
    for (i = 0; i < set.length; i++) { 
     arrayValue += set[i]; 

    } 
    return (arrayValue); 
}; 
console.log(numSum([1, 2, 3, 4])); 

Так что вы должны изменить несколько вещей в Урс код

  1. Структура For Loop
  2. использования оператора присваивания. она должна быть как x+y или x+=y

несколько Improvment

  1. Вы можете использовать только один переменной для хранения суммы и может вернуться, что.
Смежные вопросы