Comments 12

Это всё шутка или я чего-то не понимаю? Эта статья так подаётся, что голову можно сломать. Статья на Medium по ссылке всё проясняет.

Сломал глаза и уши. Почему не «редуцер»? Редукция — редуцер. Зачем транслитерировать буквально?

А по сути, статья о том, как придумали название для того, чем и так все пользовались.
Я очень рад, что в английском языке это слово звучит так. Почему в русский его нужно транслитерировать, а не калькировать?
Ну, или если не хочется отходить от английского варианта — почему бы не записать его английскими буквами? Reducer — вполне понятное и привычное слово.
Этот термин уже занят. Хотя, в принципе, почему бы и нет. Говорим же мы «фильтр».

Все было здорово в трансдьюсерах, пока не появился реальный пример. Мне кажется, я бы разбирался в этом коде часа 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 ] )
}
``
Плевать на заказчика и его ТЗ, посмотрите как модно код выглядит!
Трансдьюсер, или как написать абстрактную фабрику абстрактных фабрик в функциональном стиле!

Вы серьезно пишите такой код?
Only those users with full accounts are able to leave comments. Log in, please.