Использование Python range () в JavaScript

Как создать любимый Python range () в JavaScript с помощью итераторов

Фото Тимоти Дайкса на Unsplash

Что такое тип Python range ()?

Если вы не знакомы с Python, это range()относится к использованию rangeтипа для создания неизменяемой последовательности чисел.

« rangeТип представляет собой неизменяемую последовательность чисел и обычно используется для выполнения цикла определенное количество раз for». - docs.python.org

range()Конструктор имеет две формы определения:

range(stop)
range(start, stop[, step])

Несколько примеров:

Создание функции range () в JavaScript

Фото Камила Оборски на Unsplash

Для простоты мы проигнорируем необязательный stepаргумент.

Используя Arrayконструктор fillи map, вы можете быстро найти простое решение:

new Array(stop - start).fill(start).map((el, i) => el + i)

Но это еще не совсем то. Вы понимаете, почему это решение неверно?

Помните, что вызов Python rangeвозвращает неизменяемую последовательность чисел . Обратите внимание, как для получения знакомой структуры данных списка приведенные выше примеры Python заключают в оболочку возвращаемое значение rangeс list().

Аналогичный пример в JavaScript, вероятно, должен выглядеть примерно так:

> Array.from(range(1, 11))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Итераторы спешат на помощь!

Фото Габора Кульчара на Unsplash

Итераторы широко используются в разных языках программирования, чтобы позволить нам перебирать разные структуры данных.

«В JavaScript итератор - это объект, который определяет последовательность и потенциально возвращаемое значение после ее завершения». - developer.mozilla.org

В частности, в JavaScript итератор - это любой объект, который реализует протокол Iterator , имея next()метод, возвращающий объект с двумя свойствами:

next() {
  ...
  return {
    value: // current value to be passed
    done: // did we finish iterating over the data structure?
  }
}

Что еще более важно, если мы создадим объект, который определяет, [Symbol.iterator]который возвращает этот итератор, мы сможем получить именно то поведение, которое искали :

Поиграйте с этими примерами и посмотрите, какие интересные и полезные итераторы вы можете создать 💪.

К настоящему времени вы, наверное, уже представляете, как мы можем подойти к созданию Python range()на JavaScript. Вот как я это реализовал:

Как я уже упоминал, для простоты эта реализация не учитывает stepаргумент исходного Python range(), но это просто вопрос дополнительной логики, которую вы можете реализовать самостоятельно. Не стесняйтесь @ мне свое решение ✌.

Suggested posts

Поиск информации о доменных именах

Отрывок из книги «Маленькие программные инструменты Sharp» Брайана П. Хогана.

Поиск информации о доменных именах

Когда вы делаете запрос на facebook.com, ваш компьютер ищет доменное имя, чтобы преобразовать это доменное имя в IP-адрес, чтобы ваш компьютер мог установить это соединение.

Советы по переходу на кибербезопасность без технического образования.

Советы по переходу на кибербезопасность без технического образования.

В 2022 году я перешел с нетехнической роли на кибербезопасность. У меня была первая степень по немецкому языку, я знаю, что вы шокированы и любопытны, как я смог успешно перейти, ну, это просто случилось.

Related posts

Обучение на рабочей неделе важнее, чем вы думаете

Обучение на рабочей неделе важнее, чем вы думаете

Мы часто обнаруживаем, что изо всех сил пытаемся реализовать то, что, как мы знаем, полезно для нас. От того, чтобы сказать значимому другому, что мы любим его, до того, чтобы помнить, что нужно говорить как пират, всегда будут те, кто утверждает, что день, неделя или месяц событий не нужны, потому что они уже делают эти вещи.

Что делает подкаст влиятельным?

Что делает подкаст влиятельным?

На прошлой неделе я заметил пресс-релиз, разосланный через PressGazette (новостной веб-сайт британских СМИ). В статье сообщалось, что Acast, скандинавская компания по размещению и рекламе подкастов, возглавит консорциум «вероятно, самых влиятельных» издателей подкастинга.

Отслеживайте кого угодно только по номеру телефона | OSINT-расследование

Отслеживайте кого угодно только по номеру телефона | OSINT-расследование

Вы можете быть исследователем OSINT, игроком CTF или просто тем, кто получает спам-звонки. Кто-то, кто пытается проверить номер, который вы видели в рекламе.

Архив этой угрозы: Том 7 Черный Баста

Архив этой угрозы: Том 7 Черный Баста

В современном взаимосвязанном мире угроза кибератак более распространена, чем когда-либо. Киберпреступники и государственные деятели постоянно стремятся использовать уязвимости и украсть ценные данные, подвергая организации любого размера значительному риску.