Я с такими задачами разбирался с помощью “прогона” на бумажке нескольких конкретных случаев. (и до сих под использую этот метод).
Решение “в лоб”, основываясь на твоем скелете. Идем по всем числам до number
. Для каждого числа смотрим чего там в type
, и в зависимости от значения уже проверяем нужно ли число добавлять к сумме или нет. Для неожиданного значения в type
даем ошибку (не критично, но правильнее с точки зрения моделирования функций).
const getSumOfNumbers = function (number,type = "odd") {
let sum =0;
for (let i = 0; i <= number; i++) {
if (type === "even") {
// условие добавления и добавление если надо
} else if (type === "odd") {
// условие добавления и добавление если надо
} else if (type === "") {
// добавление безусловно
} else {
// может бросить тут исключение так как агумент неожидаемого значения
// throw new Error('Unexpected argument value')
}
}
return sum
}
Есть вериант не в лоб. В котором можно исходить из того что суть четных и нечетных чисел в инкременте на двойку только от разного основания (нечетные 1, 3, 5, 7 …, четные 0, 2, 4, 6, 8). Можно подумать и описать подготовку к циклу так что цикл будет итерировать по четным или нечетным или по всем числам.
Чтобы реализовать подход выше, нужно вынести шаг цикла и число с которого цикл стартует в переменные. И исходя из значения type
задать начальные значения в вынесенные переменные. Думаю это единственный неочевидный момент, остальное можно додумать: там код будет без сюрпризов.
let step
let start
// вместо комментария - логика задачи начальных значений ...
for (let i = start; i <= number; i += step) {
// логика подсчета суммы в теле цикла ...
}