Как вернуть суму чисел массива
Мне нужно чтобы функция принимала числа, и возвращать сумму элементов массива. Функция должна возвращать 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 шт):
Пример
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
Код работает, просто выполняет другую задачу, а именно: возвращает первый элемент массива приведенный к числу, в случае, если элемент является массивом, либо 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