Станислав Силин, да, понимаю. Этот код в декларативном виде обходит список узлов. И код делает это без переменной-счётчика, без прибавления единички на каждой итерации.
В этом коде написано «возьми все элементы по селектору и на каждом вызови функцию-коллбэк». Если нужно, этот список можно сначала отфильтровать и преобразовать, что займёт две строчки и будет понятно.
Понятность кода почти всегда важнее производительности. Кроме случаев, когда, например, на вояджере нужно апдейт накатить, а железо поменять ему нельзя.
Это и правда оправдывает необходимость занимать память, потом копировать её, потом очищать и вот это всё. Только я не уверен, что jit-компилятор не оптимизирует этот кусок.
Если подразумеваешься, что другие люди будут пользоваться этим, то ни в коем случае нельзя править библиотеки. Иначе как коллеги будут это воспроизводить? После каждого npm install (который перезаписывает node modules) руками править код библиотеки?
Вы про поле version?
Это версия текущего проекта. Вашего.
Консоль выдаёт предупреждение, а не ошибку. Поле version используется только при публикации через npm, а при установке зависимостей вас лишь предупредили, что версия невалидна, так как должна соответствовать semver.
Почему нельзя прописывать? Можно, я не против. Только это не связано с вашей проблемой, не вводите в заблуждение остальных. И сами из заблуждения выбирайтесь.