Ибо петли прекрасны.

Но циклы for имеют плохую репутацию.

Когда мы начинаем изучать программирование, циклы for часто являются первыми циклами, которые мы изучаем. Они изящны, полезны и умны. И то чувство, которое мы испытываем, когда впервые вставляем один цикл for в другой…

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

Мы были на пути к завершению мастерства программирования.

А потом…

…кто-то указал на маленькую вещь, называемую временной сложностью.

И да, ты действительно чувствовал себя той собакой.

Но не как эта корова. Никто не чувствует себя так, как эта корова. Даже эта корова не похожа на ту корову.

Итак, да, мы слышим о более широкой картине: сложности времени и пространства. Теперь мы по-другому видим наши циклы for. Мы чувствуем себя преданными ими. Мы избегаем их любой ценой.

Я не буду лгать. Я так чувствовал. Я бы использовал все, что мог, чтобы казаться умнее среднего младшего программиста. Массив.карта! Массив.уменьшить! Для каждого! Наборы! Карты!

Затем в проекте, который я создал во время работы в программе Grace Hopper, мне пришлось передавать довольно большие объекты JSON в несколько сложные функции Sequelize, и хотя я обнаружил, что мой очень роскошный код работает, была одна большая проблема…

Иногда в некоторые таблицы помещались повторяющиеся записи!

Да, дорогая, да.

Я пытался диагностировать. Мои причины были далеко и широко. Дело в том, что базы данных случайным образом делали странные вещи. Именно так я экспортировал и импортировал функции. Именно так я выполнял обещания. Это было какое-то другое ограничение Sequelize или PostgreSQL, с которым я столкнулся. Это был я. Это был VSCode. Это было…

…Я так устал. Я не мог придумать решение. Я погуглил все, что мог придумать, и кое-что нашел! Я нашел кого-то, кто сталкивался с похожими проблемами, кого-то, кто боролся так же, как и я, кто собирался указать на что-то волшебное и фантастическое, что повысит мой уровень навыков как разработчика, научит меня новой технологии, поможет мне добиться успеха, как я». мне никогда не удавалось раньше!

А оказалось, что ничего особенного. Это было действительно что-то очень простое и довольно, я не знаю, освежающее:

Да, эта непритязательная маленькая функция, вежливо сидящая там, такая простая, такая скромная, такая-само-за-моим-компьютером-в-первый-раз-обучение-эта-функция работает, потому что я НЕ использую более сложные инструменты. .

Что было раньше? О, это было фантастичнее. Это было более впечатляюще. Это не заставило меня сожалеть о том, что я опубликовал это или показал другим, потому что это выглядело так, как будто я знал, как программировать, когда я смотрел на это. Но он был сломан, несовершенен, ненадежен, непоследователен и трудно отлаживался.

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

Да мальчики. да. Дай пять в порядке. Кроме того, ты помнишь, каково это было, когда мы все могли сидеть за таким столом, давать пять, пить пиво и смеяться?

Ну, это было похоже на цикл for. Ага. Базовый. Хорошо. Вещи. Не подходит для всего, но подходит для многих вещей.