
Dima
19.10.2018
18:22:54
Типа array_merge_recursive , аналог в php

Viktor
19.10.2018
18:24:52

?? Denis
19.10.2018
18:25:01
$.extend (с параметрами же)

Google

?? Denis
19.10.2018
18:25:50
$.extend(true, obejct1, object2, object3, ... )

Viktor
19.10.2018
18:25:52

Andrew
19.10.2018
18:28:05

Viktor
19.10.2018
18:28:06
This method is like _.assign except that it recursively merges own and inherited enumerable string keyed properties of source objects into the destination object. Source properties that resolve to undefined are skipped if a destination value exists. Array and plain object properties are merged recursively. Other objects and value types are overridden by assignment. Source objects are applied from left to right. Subsequent sources overwrite property assignments of previous sources.

Andrew
19.10.2018
18:28:43
Можно нативной, я тебе выше написал

Viktor
19.10.2018
18:29:24

Andrew
19.10.2018
18:30:05
По мойму да

Dima
19.10.2018
18:30:07
Ясно, спс. Да видел loadash, богатая библиотека. Просто хотелось чего-то простого из коробки, без дополнительных либ.

Andrew
19.10.2018
18:30:17
Проверь

Viktor
19.10.2018
18:30:17

Andrew
19.10.2018
18:30:27
))

Google

Andrew
19.10.2018
18:30:40
То есть только 1 уровень?

Viktor
19.10.2018
18:32:41

Andrew
19.10.2018
18:34:25
Ну похоже)

Max
19.10.2018
18:34:29
Можно и без лодаша:
function deepClone(o) {
return new Promise(resolve => {
const { port1, port2 } = new MessageChannel();
port2.onmessage = ev => resolve(ev.data);
port1.postMessage(o);
});
}
(async function () {
const obj = { a: 1, b: { c: "foo" } };
const cloned = await deepClone(obj);
console.log(cloned);
})();
для ноды не будет работать, но там это и не нужно особо, хватает встроенных утилит

Andrew
19.10.2018
18:34:34
Можно руками быстро сделать

Viktor
19.10.2018
18:35:30
На самом деле, мне в JS вообще глубокое копирование почти не пригождалось

Andrew
19.10.2018
18:35:44

Viktor
19.10.2018
18:35:56
Object.assign в 99.9% решает все проблемы

Andrew
19.10.2018
18:36:05
))

Viktor
19.10.2018
18:37:35
если не секрет

Dima
19.10.2018
18:38:06
В обоих направлениях)

Viktor
19.10.2018
18:38:07
или какая-то совсем специфическая задача
а)

Max
19.10.2018
18:39:23
Забудьте уже про lodash, ramda и прочие абстракции накладывающие нехилый оверхед и добавляющие килобайты кода

Viktor
19.10.2018
18:39:40
мысль не закончена, явно

Google

Max
19.10.2018
18:41:02
А что заканчивать? Вот смотри:
https://gist.github.com/MaxGraey/e7486833ae3a7abe072ac35afce8a240

Dima
19.10.2018
18:41:08
Фронтендер отказался php устанавливать, а там сложная дичь на вуе

Viktor
19.10.2018
18:43:13
я пользовался и пользуюсь всем из этого, больше всего rxjs

Max
19.10.2018
18:43:42

Viktor
19.10.2018
18:43:52
нет, я везде

?? Denis
19.10.2018
18:44:47

Max
19.10.2018
18:46:07

Viktor
19.10.2018
18:49:43
потому что ramda ужасно тяжелая из-за автокаррирования повсюду (у нее очень много внутренних оберток-абстракций в самих ее исходниках)

?? Denis
19.10.2018
18:51:03
ну не используй Ramdу
используй более другие средства

Viktor
19.10.2018
18:51:21
в дополнение к этому любой pure-javascript подход будет добавлять оверхед
теперь, что касается массива с семью или сколько там нулей
нигде на бэкенде в жизни я не обрабатывал таких массивов данных

?? Denis
19.10.2018
18:52:12
purejs будет чаще всего жырнее по loc и менее читабелен

Viktor
19.10.2018
18:52:45
node.js бэкенд - это "скоросшиватель" небольших по своей сути ответов от БД и других сервисов
поэтому мне не кажется, что та же ramda очень больно ударит по среднему бэкенд-сервису

Google

Viktor
19.10.2018
18:56:02
максимум, что с чем мне придется работать (и то вряд-ли) в большинстве случаев - это сотня записей из БД, которые я покажу на очередном отрезке пагинации
где нибудь на клиенте
поэтому для узких мест, если они будут, я применю pure-lambda-подход, в остальных случаях, я не напишу что-то более производительное лодаша, если дело зайдет дальше compose или каррирования

Max
19.10.2018
18:57:58

?? Denis
19.10.2018
18:58:35
никуда ramda не ударит. в живой среде никто не будет 10 млн итераций гонять с помощью ramda

Viktor
19.10.2018
18:58:40

?? Denis
19.10.2018
18:58:53
десятки, сотни, единицы тысяч записей в худшем случае из БД

Admin
ERROR: S client not available

?? Denis
19.10.2018
18:59:14
если ты дергаешь миллионы записей из БД для обработки рамдой - иди писать в 1С, там таких любят

Viktor
19.10.2018
18:59:17
в чем этот gist меня должен убедить? не использовать вышеупомянутые абстракции в принципе?

Max
19.10.2018
18:59:56
То что ты не сталкиваешься с большими данными которые нужно быстро обрабатывать еще не значит, что никто не сталкивается. Не суди всех по себе

?? Denis
19.10.2018
19:01:05
я как раз сталкиваюсь, только не на js :)

Viktor
19.10.2018
19:01:29
мне это как-то все кажется притянутым за уши, если честно :) мне в принципе на бэкенде все вышеупомянутое не часто требовалось
compose/pipe я итак руками пишу всегда и кидаю в папку utils
в остальном, я не знаю, что мне ответить
если мне нужно будет выполнить тройное сальто, я лучше подключу salto.js

?? Denis
19.10.2018
19:02:25
все эти штуки типа триангуляции и mapboxjs это всё очень очень специфичные штуки
вживой природе овер 90% программеров этого не трогает

Google

?? Denis
19.10.2018
19:03:12
и рамда и lodash будет для них прекрасным инструментом

Viktor
19.10.2018
19:03:21

?? Denis
19.10.2018
19:03:42
а когда они дойдут до бигдаты - они сами поймут каким способом и что сделать и что рамда тут лишний

Viktor
19.10.2018
19:03:43
если уж мы рассуждаем о сферических проблемах в вакууме, я считаю, что удобство разработки не последний критерий
всегда будут абстракции - это факт
утилиты, библиотеки, хелперы - все это абстракции, без которых никак

Max
19.10.2018
19:04:07

Viktor
19.10.2018
19:04:41
среди них всегда есть альтернативы для выбора

Max
19.10.2018
19:05:09
Что там про сальто говорили?) Если для таких простых вещей нужно тянуть внешние зависимости то пожалуйста, в npm подобного добра завались

?? Denis
19.10.2018
19:05:37
и тот же lodash и рамда прекрасные инструменты для отлаживания алгоритмов и возможно потом и не надо будет от них избавлятся потому что выясница что тормоза не из-за них

Max
19.10.2018
19:06:57

?? Denis
19.10.2018
19:07:54

Viktor
19.10.2018
19:09:21
ты все равно в итоге напишешь велосипед
тот же lodash.curry немного толще твоего curry будет

Max
19.10.2018
19:10:30

Viktor
19.10.2018
19:10:43
вот это уже более конкретный вопрос
согласен тут на 100%
вот пример

Lyrran
19.10.2018
19:11:09
есть желающие получить кучу вопросов от начинающего студента, возможно на постоянной основе?)

Viktor
19.10.2018
19:11:29
мне нужен equalityCheck для потока данных в rxjs, я гляжу в lodash, там есть метод isEqual