Функция range в JavaScript
Перед программистами часто встает задача генерирования некой последовательности чисел, например, чтобы затем пройтись по этой последовательности циклом. В PHP для этого есть специальная встроенная функция под названием range(min,max),которой можно передать минимальное и максимальное значение по которым она самостоятельно сгенерирует массив.
В JavaScript потребность в создании последовательностей чисел тоже есть, но нет встроенной функции range, как в PHP. Поэтому сегодня мы ее и напишем. Сразу скажу, что способов написания подобной функции в JavaScript множество, но я вам покажу наиболее простой и экономный, с точки зрения потребляемой памяти вариант. Итак, поехали...
// используем генераторы JavaScript
function* range(start, end) {
for (let i = start; i <= end; i++) {
yield i;
}
}
// генерируем последовательность
range(0,10)
А теперь реализуем эту функцию несколько иначе, избавившись от цикла и используя рекурсию:
function* range(start, end) {
yield start;
// если начальное и конечное значение совпадают
if (start === end) return;
// рекурсивно вызываем функцию-генератор
yield* range(start + 1, end);
}
// вызываем
[...range(0,10)]
// вывод
// Array(11) [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
Вот так просто можно реализовать функции из PHP в JavaScript.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.