Комментарии 12
Это всё шутка или я чего-то не понимаю? Эта статья так подаётся, что голову можно сломать. Статья на Medium по ссылке всё проясняет.
Сломал глаза и уши. Почему не «редуцер»? Редукция — редуцер. Зачем транслитерировать буквально?
А по сути, статья о том, как придумали название для того, чем и так все пользовались.
А по сути, статья о том, как придумали название для того, чем и так все пользовались.
Все было здорово в трансдьюсерах, пока не появился реальный пример. Мне кажется, я бы разбирался в этом коде часа 3. А если там баг закрадется или, к примеру, требования чуть поменяются, то все, вообще можно свет тушить. К качеству статьи и перевода это, впрочем, не относится.
Ваше решение на трансдьюсерах мало того, что громоздкое и неэффективное, так ещё и не соответствует тз — выводится только список без информации о числе переходов.
Вот решение безо всяких трансьюсеров:
const paths = {}
logContents.replace( /^(\w+), (\w+)$/mg , ( str , user , place )=> {
if( !paths[ user ] ) paths[ user ] = []
paths[ user ].push( place )
return ''
} )
const stat = {}
for( let user in paths ) {
const path = paths[ user ]
for( let i = 1 ; i < path.length ; i++ ) {
const key = `${ path[ i - 1 ] } -> ${ path[ i ] }`
stat[ key ] = ( stat[ key ] || 0 ) + 1
}
}
const sorted = Object.keys( stat ).sort( ( a , b )=> stat[ b ] - stat[ a ] )
for( let transition of sorted ) {
console.log( transition , stat[ transition ] )
}
``
Трансдьюсер, или как написать абстрактную фабрику абстрактных фабрик в функциональном стиле!
Вы серьезно пишите такой код?
Вы серьезно пишите такой код?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Путь к трансдьюсерам на чистом JavaScript