I'll start by saying that
lodash is an awesome library, I have nothing against it. That being said, the biggest advantage
Ramda has over
lodash is the combination of argument order and automatic function currying. So, for something like
lodash takes the collection as the first argument, where
ramda takes the predicate function first, and it then curries that function. So,
R.filter(x => x % 2 == 0) returns a new function that you just have to pass data to. To accomplish the same thing with
lodash, it would look like this:
_.partial(_.filter, _, (x) => x%2==0) where you need to use partial application to return a partially applied version of
filter function and a placeholder to account for the fact that I don't have the data yet and it is expected as the first argument to filter.
Having curried functions that can be used on different data contributes to building small, reusable functions and it also makes it easier to put together functional pipelines or compositions while keeping the code readable.
You can accomplish the same things with the functional programming variant of
lodash/fp gets you most of the same capabilities, but it doesn't offer lenses, and lenses can be very powerful.
Hope this helps.