Нужна ваша помощь [вычислить сумму всех элементов массива, которые делятся без остатка на 3]

Реализуйте и экспортируйте по умолчанию функцию, которая высчитывает сумму всех элементов массива, которые делятся без остатка на 3 (три).

Примеры

const coll1 = [8, 9, 21, 19, 18, 22, 7];calculateSum(coll1); // 48 const coll2 = [2, 0, 17, 3, 9, 15, 4];calculateSum(coll2); // 27

В случае пустого массива функция должна вернуть 0 (для этого в коде можно использовать guard expression):

const coll = [];calculateSum(coll); // 0

Попробуй посмотреть сюда:

Не то же самое, но принцип будет тот же.

Не понимаю как сделать(

В чем именно сложность?

сложность в принципе этого задания

Окей.

  1. Объявить функцию calculateSum
  2. В теле функции проверить, что массив не пустой. Если пустой - вернуть 0
  3. Если не пустой - пройти по элементам массива
  4. Проверить каждый элемент, делится ли он на 3 без остатка. Если делится - добавить его в какую-нибудь временную переменную.
  5. Вернуть временную переменную.

Да, строго говоря, пункт 2 можно пропустить, если заранее объявить эту временную переменную и присвоить ей 0.

1 лайк

const calculateSum = (num) => {}

так?

export default calculateSum = (coll) => {
let sum = coll[0];
for (let i = 1; i < coll.length; i += 1) {
if (coll[i] % 3 === 0) {
sum += coll[i];
}
return sum;
}
return 0;
}

получается 17 и 2, а должно быть 48 и 0

Там две ошибки:

  1. Первый return прямо в теле for. Он успевает только одно значение обработать
  2. let sum = coll[0]; ты присваиваешь начальное значение sum первому объекту массива, независимо от того, что там.

Можешь написать какие-нибудь базовые тесты, чтобы проверить, что оно работает как ты ожидаешь:

const calculateSum = (array) => {
	// your code here
}

console.log(calculateSum([8, 9, 21, 19, 18, 22, 7]) === 48);
console.log(calculateSum([9]) === 9);
console.log(calculateSum([8]) === 0);
console.log(calculateSum([]) === 0);

в консоль должно вывести

true
true
true
true
1 лайк
export default calculateSum = (arr, n) => {
   return arr.length == 0 ? 0 : ( arr.filter( x => x % n == 0 ).reduce( (sum, current) => sum + current, 0 ) );
   }
1 лайк

Я взлезу с непрошенным мнением на назаданные вопросы особенно тем кто смотрит, не понимает что и почему написано и что-то думает-чувствует по этому поводу.

Решение корректное. Но, по моему мнению, не подходящее для тех кому адресуется.

Если ты студент или джуниор и если ты не понимаешь написанного - не проблема. В коде используется несколько концепций которые навряд ты знаешь если решаешь задачи как в обсуждаемой теме. На изучение каджой из этих концепций (модули, экспорты, синтаксис анонимных функций и передача аргументов в коллбеках методов, механика тернарного оператора) с нуля нужно тратить не один день усилий. Если ты легко в таком разбираешься с нуля в подобном коде, это признак большой склонности к программированию.

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

2 лайка

Блин, три раза прочитал и трижды заблудился )) Вот вы наворачиваете! Смысл, конечно, понял

1 лайк