
Vyacheslav
07.07.2017
06:49:42

Дмитрий
07.07.2017
06:50:08
Моё решение можно запихнуть в transducer
Будет быстрее чем все остальные

Google

Oleg
07.07.2017
06:51:53
А точно трансдьюсер будет быстрее?

Дмитрий
07.07.2017
06:52:02
Стопудов

Oleg
07.07.2017
06:52:54
Поверю на слово

Дмитрий
07.07.2017
06:53:05
Поверю на слово
Трансдюсер — это когда из последовательности мапов и редьюсов (а так же большого числа производных задач) делается ряд однопроходных вычислений

Oleg
07.07.2017
06:53:21
...то есть по сути редусер
Если один он

Daniel
07.07.2017
06:53:33
Если сделать одним нативным редьюсом, то будет медленнее рамды?

Дмитрий
07.07.2017
06:53:39
Это абстракция над ним

Oleg
07.07.2017
06:53:47
?
Вот!

Дмитрий
07.07.2017
06:53:57
Приводяющая всё к одному виду. Это НЕ редюсер

Oleg
07.07.2017
06:53:59
По этому и разговор про это

Google

Дмитрий
07.07.2017
06:54:05
Хотя и очень близок к нему

Daniel
07.07.2017
06:54:12
Да понятно, как работают трансдюсеры
Вопрос в том, быстрее ли они одного нативного вызова

Дмитрий
07.07.2017
06:54:29
То есть мы выкидываем все промежуточные массивы и каждый элемент последовательно превращается из начального состояния сразу в конечное
Целикового кода никто больше не предоставил))

Daniel
07.07.2017
06:55:18
Ну все, я расчехляю свою мобильную клавиатуру
arr
.reduce((acc, { order }) => { acc[order] = (acc[order] || 0) + 1; return acc; }, {})

Дмитрий
07.07.2017
06:57:20
На выходе должна быть строка
Потому что у меня строка))

Daniel
07.07.2017
06:57:33
А, там строка

Пашок
07.07.2017
06:57:56
Мм, вот бы щас в редьюсе мутировать элементы а потом их же возвращать

Дмитрий
07.07.2017
06:58:14

Daniel
07.07.2017
06:58:14
Мм вот щас бы не понимать как аккумулятор работает

Пашок
07.07.2017
06:58:31
а блять редьюс же
сори

Oleg
07.07.2017
07:00:00
Но если расширить прототип массива, добавив ему инкрементер указанного значения с возвратом самого себя назад - можно и без разделения на 2 части

Vyacheslav
07.07.2017
07:02:23

Дмитрий
07.07.2017
07:03:12

Oleg
07.07.2017
07:03:28
Но если пишешь код для себя - то нельзя

Google

Oleg
07.07.2017
07:03:47
А вообще это были филосовские размышления :D

Дмитрий
07.07.2017
07:05:16

Oleg
07.07.2017
07:05:55
А вообще это были филосовские размышления :D

Artyom
07.07.2017
07:23:54
Простите, может быть, за глупый вопрос. Ramda - это функциональный (синтаксически) lodash или там еще что?

Roman
07.07.2017
07:24:59
ну в целом да
но там естьеще ramda-fantasy с монадами

Artyom
07.07.2017
07:30:53
А какие профиты? нужно ли это в обычной жизни (сложная бизнесс логика с фильтрами)? Какие кейсы у меня должны быть, что бы я задумался о переходе на нее?

Дмитрий
07.07.2017
07:33:58
Нету больше ramda-fantasy

Кирилл
07.07.2017
07:34:57
можно открыть fantasy-land и понять свою никчемность

Дмитрий
07.07.2017
07:35:37
Да они нерды просто. Я уже использовал метафору про мычание сегодня, но к монадам это относится гораздо больше

Roman
07.07.2017
07:36:26

Дмитрий
07.07.2017
07:36:30
Functor — коробка с объектом, которая имеет метод .map, такой же как в массиве
Ну и так далее

Artyom
07.07.2017
07:36:42
import {
groupBy,
pipe,
prop,
map,
length,
toPairs,
join,
} from 'ramda'
const transform = pipe(
groupBy(prop('order')),
map(length),
toPairs,
map(([id, result]) => `'order${id}': ${result}`),
join(', ')
)
const result = transform(arr)
Ты про это?
Нуу...
Но твое решение быстрее? Или я упустил что-то

Дмитрий
07.07.2017
07:37:20
При желании, да
Сейчас просто сравнивать не с чем, больше решений нет, лол

Кирилл
07.07.2017
07:38:31
оно лаконичней но нужно знать что делают все эти функции, можно решить средствами языка но будет более многословно прост

Google

Дмитрий
07.07.2017
07:39:16
Кэп)

Roman
07.07.2017
07:39:42
и медленне скорее всего, чего уж там

Кирилл
07.07.2017
07:39:46
я к тому что для 95% второй вар будет читабельней

Дмитрий
07.07.2017
07:40:04

Artyom
07.07.2017
07:40:26

Кирилл
07.07.2017
07:40:35
хех это заразно походу

Дмитрий
07.07.2017
07:40:37

Кирилл
07.07.2017
07:42:28
ну тут уж сам определяешь грань между библиотека облегчает жизнь и излишним нагромождением левого кода

Дмитрий
07.07.2017
07:42:40
Ну и когда всё подчинено общей идее как то меньше о всяких мелочах задумываешься.
На следующем левел апе можно не проверять значения на null например, если есть вероятность что такие могут быть

Admin
ERROR: S client not available

Дмитрий
07.07.2017
07:43:03

Кирилл
07.07.2017
07:43:11
ну это уже профиты фя типа одинаковых интерфейсах и т д

Дмитрий
07.07.2017
07:43:16
Нет
(я конкретно про null), просто это всё так работате

Roman
07.07.2017
07:43:45
эпидемия

Кирилл
07.07.2017
07:44:04
луддизм - новый день - новое слово ?

Дмитрий
07.07.2017
07:44:18
эпидемия
Где? Я про рамду задвигал когда в группе ещё тысячи человек не было)

Кирилл
07.07.2017
07:44:34

Дмитрий
07.07.2017
07:49:23
jsperf.com/native-map-vs-handmade/1
Вот я недавно делал

Google

Дмитрий
07.07.2017
07:51:53
С map там вообще разрыв раза в два получается

Sergey
07.07.2017
07:53:45


Евгения
07.07.2017
07:54:25
Привет! Есть #вакансия в Питере Web-разработчика.
Требования:
• Уверенное владение python/javascript (2.7+/3+).
• Знакомство с NoSQL.
• Опыт работы с системами контроля версий: git/mercurial.
• Linux/MacOS в качестве основной ОС.
• Знание современных js-фреймворков с пониманием их архитектуры.
О задачах:
Задачи будут по большей части по фронтэнду. Сейчас мы находимся в фазе перехода от устаревшего монолитного приложения к микросервисной архитектуре. Работа будет над системой электронного документооборота (АТИ-Доки), мессенджером (АТИ-мессенджер), информационным изданием (АТИ-Медиа) и впереди еще много интеграционных проектов.
Разработка ведется в автоматизированной и покрытой тестами инфраструктуре.
Предлагаем:
Зарплата до 150 т.р. нетт, гибкий график, ДМС, компенсация спорта, языковых курсов, бесплатные обеды, оплата профессиональных конференций и семинаров; офис в БЦ класса А.
e-mail: evgeniya.k@ati.su


Sergey
07.07.2017
07:54:26
Чего они такого на нативном уровне делают что JS имплементация работает быстрее
*сорцы читать лень*

Кирилл
07.07.2017
07:55:49
-

Artyom
07.07.2017
07:55:57
А, понял

Gkio
07.07.2017
07:57:12
Array.prototype.forEach.call >
[].forEach.call >
map

Sergey
07.07.2017
07:57:25

Дмитрий
07.07.2017
08:03:16
Да, я только что апдейтнул с forEach на map)

Sergey
07.07.2017
08:05:46

Дмитрий
07.07.2017
08:05:59
https://jsperf.com/native-map-vs-handmade/3

Sergey
07.07.2017
08:06:30
Если я все правильно помню сколько элементов у массива на входе столько и на выходе должно быть
И не важно null оно или undefined

Вишневый чай
07.07.2017
08:07:24
какая-то нереальная разница