Answer

Answer

t.me/js_test

Ответ:

function range(start = 0, stop = start, step = 1) {
    if ((step > 0 && start >= stop) || (step < 0 && start <= stop)) {
        return [];
    }

    const result = [];
    for (let i = start; step > 0 ? i < stop : i > stop; i += step) {
        result.push(+i.toFixed(2));
    }

    return result;
}

Объяснение:

start по умолчанию делаем равным нулю, stop по умолчанию равным start (да, так можно) а step по умолчанию равным одному. Делаем проверку на неправильные аргументы, например когда start больше stop а шаг больше нуля. Создаём результирующий массив и в цикле добавляем в него элементы. Цикл определяется переданными в функцию параметрами. Ну и возвращаем результирующий массив.

Код для проверки:

function range(start = 0, stop = start, step = 1) {
    if ((step > 0 && start >= stop) || (step < 0 && start <= stop)) {
        return [];
    }

    const result = [];
    for (let i = start; step > 0 ? i < stop : i > stop; i += step) {
        result.push(+i.toFixed(2));
    }

    return result;
}

console.log(range(0, 6)); // [0, 1, 2, 3, 4, 5]
console.log(range(6, 0, -1)); // [ 6, 5, 4, 3, 2, 1 ]
for (const n of range(0, 0.5, 0.1)) {
    console.log(n); // 0 0.1 0.2 0.3 0.4
}

Report Page