Как вернуть суму чисел массива

Мне нужно чтобы функция принимала числа, и возвращать сумму элементов массива. Функция должна возвращать null если в качестве аргумента передан не маcсив. Мой код сейчас выглядит вот так. Почему он не работает?

function getSum(arr) {
  let sum = 0;
  for(let i = 0; i < arr.length; i++){
    if(Array.isArray[i]){
      return sum + arr[i];
    } else{
      return null;
    }
  }
}

// examples
getSum([1, 10, -10, 4]); // ==> 5
getSum([1]); // ==> 1
getSum([-8, 8]); // ==> 0
getSum(10, 12, 14); // ==> null


Ответы (3 шт):

Автор решения: soledar10

Пример

function getSum(arr) {
  if (!Array.isArray(arr)) return null;  
  return arr.reduce((a, b) => a + b, 0)
}

// examples
console.log(getSum([1, 10, -10, 4])) // ==> 5
console.log(getSum([1])); // ==> 1
console.log(getSum([-8, 8])); // ==> 0
console.log(getSum(10, 12, 14)); // ==> null

→ Ссылка
Автор решения: Алексей Шиманский

function getSum(arr) {  
  if (!Array.isArray(arr))
    return null;

  let sum = 0;

  for (let i = 0; i < arr.length; i++) {
    sum += arr[i];
  }

  return sum;
}

// examples
console.log(getSum([1, 10, -10, 4])); // ==> 5
console.log(getSum([1])); // ==> 1
console.log(getSum([-8, 8])); // ==> 0
console.log(getSum(10, 12, 14)); // ==> null

→ Ссылка
Автор решения: Grundy

Код работает, просто выполняет другую задачу, а именно: возвращает первый элемент массива приведенный к числу, в случае, если элемент является массивом, либо null в противном случае.

Для решения исходной задачи - проверка должна осуществляться до цикла

Array.isArray - это метод, следовательно для вызова нужно указывать круглые скобки, а не квадратные, также проверять надо параметр arr: Array.isArray(arr)

В теле цикла достаточно прибавлять значения в переменную sum: sum += arr[i]

Результат нужно вернуть после цикла. Результат содержится в переменной sum: return sum.

function getSum(arr) {
  if (!Array.isArray(arr)) return null;

  let sum = 0;
  for (let i = 0; i < arr.length; i++) {
    sum += arr[i];
  }
  return sum;
}

// examples
console.log(getSum([1, 10, -10, 4])); // ==> 5
console.log(getSum([1])); // ==> 1
console.log(getSum([-8, 8])); // ==> 0
console.log(getSum(10, 12, 14)); // ==> null

→ Ссылка