Не очень понимаю зачем несколько раз по массиву надо проходиться и зачем писать код, который сам же потом не можешь модифицировать
Если уж однострочными методами вам сложно, то вам надо начать с самый простых и очевидных реализаций, например через самый обычный цикл for:
const sumOfPositives = (arr = []) => {
let sum = 0;
for (let i = 0; i < arr.length; ++i) {
if (arr[i] > 0) sum += arr[i];
}
return sum;
}
console.log(sumOfPositives([1, -1, 2, -2, 3, -3]));
console.log(sumOfPositives([-1, -2, -3]));
console.log(sumOfPositives([]));
console.log(sumOfPositives());
Потом можно переписать с помощью for..of:
const sumOfPositives = (arr = []) => {
let sum = 0;
for (const num of arr) {
if (num > 0) sum += num;
}
return sum;
}
console.log(sumOfPositives([1, -1, 2, -2, 3, -3]));
console.log(sumOfPositives([-1, -2, -3]));
console.log(sumOfPositives([]));
console.log(sumOfPositives());
А потом уже можно писать однострочные ответы, например так:
const sumOfPositives = (arr = []) => arr.reduce((sum, num) => num > 0 ? sum += num : sum, 0);
console.log(sumOfPositives([1, -1, 2, -2, 3, -3]));
console.log(sumOfPositives([-1, -2, -3]));
console.log(sumOfPositives([]));
console.log(sumOfPositives());