Gordey
легаси надо переписывать в параллели с поддержкой
Дима
Дима
Java is new COBOL
Vladislav
Я буду мстить бекендерам, говнокодившим в мой фронтенд
Дима
Убивший дракона сам становится драконом))
Anonymous
кобол норм, на нем самолеты американские летают
Дима
Это те, которые переворачивались над Мёртвым морем?)
Anonymous
и те, и те, что летают до сих пор
Anonymous
и в штатах за кобол пиздец сколько платят, кстати
Anonymous
джаве не снилось
Дима
Ожидаемо) Страна первая внедряла высокие технологии, богатого легаси завались
Дима
Нью-Йоркское метро на релюшках столетней давности вообще)
Anonymous
как и наши атомные подлодки
Sash
как и наши атомные подлодки
вот почему они возле нью-ерка плавают
Andrew
НИКТО
А сам то
Andrew
Anonymous
const items = new Array(count).fill(null) .map(index => blaBlaBla(index)); Вместо const items = []; for (const index = 0; index < count; index++) { items.push(blaBlaBla(index)); } Мм?
Safort
@bigslycat Норм, только вот зачем тут return? .map(index => return blaBlaBla(index)); без него не работает что ли?
Anonymous
Ой. Забыл убрать, когда приводил к сокращённому синтаксису.
Anonymous
Ну, в данном примере можно сократить и до const items = new Array(count).fill(null) .map(blaBlaBla);
Anonymous
Весь вопрос в адекватности конструкции new Array(count).fill(null).map(...);
Дима
Один вопрос — зачем?))
Дима
Чем тебе просто map не угодил?)
Anonymous
Тем, что new Array(count) создаёт массив заданного размера, но значения его элементам не присвоены. Array.prototype.map() и Array.prototype.forEach() просто пропускают такие элементы. Поэтому, прежде чем обойти такой массив, я заполняю его значениями null или undefined.
Anonymous
new Array(3) // [ , , ] new Array(3).fill(undefined) // [ undefined, undefined, undefined ]
Anonymous
👆Это вывод ноды.
Anonymous
А хотите пораскинуть мозгами?
Дима
Тем, что new Array(count) создаёт массив заданного размера, но значения его элементам не присвоены. Array.prototype.map() и Array.prototype.forEach() просто пропускают такие элементы. Поэтому, прежде чем обойти такой массив, я заполняю его значениями null или undefined.
Зачем обходить пустой массив 😵 Если ты используешь map, то у тебя должен быть исходный массив, его и обходи) Если проблема просто именно в том, что не обходятся пустые элементы, то не знаю, мне проще ramda включить, в котором forEach и map пофикшены из коробки и не забивать голову такими вещами)
Дима
Вместо for
Я не про это)
Anonymous
Я представил 2 способа.
Anonymous
Первый — создание массива с заданной длиной и заполнение его значениями.
Anonymous
Второй — создание массива с нулевой длиной и генерация значений во внешнем цикле.
Anonymous
Второй способ — традиционный.
Anonymous
Первый — не очень.
Anonymous
Но красивый и компактный.
Дима
Я просто не понимаю, зачем нужен просто массив, в отрыве от данных let usedItems = [1,2,3] let resultedArray = usedItems.map(e=>e*e) Что не устраивает здесь то?)
Anonymous
Блин.
Anonymous
Содержание массива заранее неизвестно.
Дима
А как это мешает сделать map?)
Anonymous
Оно генерируется или получается. Заранее известна только его длина.
Anonymous
О боже.
Anonymous
Забей.
Дима
Ну вот как получается тогда мап и делаешь. reduce опять же. В общем, у тебя очень странная задача. Тогда заполнение пустыми элементами, что уж
Anonymous
Задача очень тривиальная.
Дима
Да)
Anonymous
Допустим, тебе нужно сгенерировать массив объектов. У объектов должны быть свойства, которые рассчитываются на основе индекса родителя в массиве. Писать const items = [1, 2, 3, ...].map( ... ); не вариант, т.к. объектов может быть 100... 1000... Не-не, это уж слишком. Соответственно, тебе нужно сгенерировать последовательность.
Anonymous
Поэтому let usedItems = [1,2,3] здесь не катит.
Anonymous
Редъюз тоже.
Anonymous
Ну, хотя, написать специальный редъюсер — тоже красиво. Но бессмысленно.
Дима
function _map(fn, functor) { var idx = 0; var len = functor.length; var result = Array(len); while (idx < len) { result[idx] = fn(functor[idx]); idx += 1; } return result; } Это map из ramda, фактически твой случай, только уже написанный, ещё и максимально упрощённо. Уже с тестами, документацией и прочим. Поэтому я не парюсь по такой фигне а просто пишу const mapper = R.map(anyFunc) let newArray = mapper(anyArray) Незачем изобретать велосипед))
Дима
Можешь использовать его, тащемта
Anonymous
Эммм... Очень сомневаюсь, что мне нужно подключать либу ради решения такой задачи. Я понимаю, если она сократит мой код на стопиццот строк, но она в данном случае сокращает всего лишь длину одной строки моего кода.
Дима
Такие вещи не длину сокращают, а время)
Anonymous
Ну и велосипеда здесь нет. И времени я не затрачиваю больше.
Дима
Ты уже пол часа размышляешь))
Anonymous
Я же не пишу никаких новых конструкций.
Anonymous
Ты думаешь, что подключаемые библиотеки существуют, чтобы избавить от необходимости думать? =) Нет. Это не так.
Дима
А для чего же 😵
Дима
И тем не менее, почему тебя не устраивает _map = func=>e=>e.map(func) "Это уж слишком" — не ответ, родной map хотя бы движком соптимизируется
Дима
const mapper = _map((e,i)=>e+i) let newArray = mapper(anyArray)
Дима
Где то внутри V8, я хз где, пусть оно сам делается
Anonymous
Ты в корне не понял задачу.
Anonymous
Задача — не обойти массив, а сгенерировать.
Дима
У объектов должны быть свойства, которые рассчитываются на основе индекса родителя в массиве У тебя есть индекс родителя и функция-генератор (e,i)=>{}, это всё, что нужно для генерации нового массив
Дима
Задача — не обойти массив, а сгенерировать.
Это одно и то же. map возвращает новый массив, как бы, не?
Дима
const items = new Array(count).fill(null) .map(index => blaBlaBla(index));
Дима
Ага, и где взять индекс родителя до создания самого родителя?
Ну это не map тогда, выглядит странно. Да и создавать новый массив, потом проход по индексам, потом результат в новый массив — это хуже, чем просто while/for второго варианта
Дима
А с точки зрения логики - у меня вот fatal error случился от маппинга ничего в массив %) Map это преобразование, к созданию его прикручивать противоестественно
Anonymous
о.0
Anonymous
Какой код ты выполнил? =)
Дима
Ну мне оказалось достаточно просто прокрутить в голове))
Anonymous
Ну, прокрутить в голове что? =)
Michael
Процент ложных срабатываний ниже
Какие юзер-агенты брал? Откуда база? Я слабо верю, что в одно лицо можно сделать что-либо лучше, чем пхпшный mobile detect.
Michael
лан, позанудствовал, хватит