2016-11-11 3 views
3

Так что я использую brackets.io для выполнения своего javascript-программирования, и мне интересно, как суммировать массив. Теперь я уже посмотрел в .reduceСумма массива без JQuery

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

, но это работает ошибка. Я также подумал, что постараюсь сделать свой счетчик ...

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

Но даже это не работает для меня. Я получаю ошибку на array.length

Открыт для предложений, может быть, я просто использую свои массивы неправильно. Возможно, мне нужно сделать больше исследований массивов?

+1

Что такое определение 'array'? Это может быть не массив. –

+1

Вы понимаете, как работает 'сокращение'? Почему вы думаете, что 'a, b' даст вам сумму? Почему вы не указали ошибку в своем вопросе? –

+0

'array.reduce (function (a, b) {return a + b;})' – Redu

ответ

6

Ваше сокращение неверно. Вам нужно вернуть новое значение, добавленное в накопитель (a).

var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; 
 

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

 
console.log(sum);

Существует не очевидная причина для второй функции является некорректным (кроме i <= array.length, который будет вне границ для последнего прироста). Нам нужно будет увидеть, что array - это проблема, но похоже, что это не массив.

Другим способом вы можете написать функцию такова:

var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; 
 
var count = 0; 
 

 
var sum = function(num) { 
 
    count += num; 
 
} 
 

 
array.forEach(sum); 
 

 
console.log(count);

Я предпочитаю использовать forEach вместо для петель при работе с массивами. Это устраняет потенциальную ошибку выхода за пределы.

3

Неверная функция reduce. Вам нужно вернуть результат добавления двух значений.

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

в случае, когда элементы являются примитивами, вы можете опустить начальное значение. –

+0

@NinaScholz вы могли бы, но я думаю, что это всегда хорошая идея, чтобы использовать его, чтобы вы не получали неожиданных ошибок. Например, если массив является '[]', и нет начального значения, если будет задан TypeError. –

1

Вот это самый простой способ, что я знаю, если вам не нравится, другие операторы и петель, столько < 3:

var arr = [1, 3, 7, 19]; 
 
    
 
    function arrSum(arr) { 
 
    \t var sum = 0; 
 
    \t for(var i = 0; i < arr.length; i++) { 
 
     \t sum += arr[i]; 
 
     } 
 
    \t console.log(sum); 
 
    } 
 
    arrSum(arr);

Удачи!

Смежные вопросы