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
}