Which Lodash Function Should I Use?

I created this reference because the Lodash function list makes my eyes blurry. What is the difference between drop, difference, and pull? Who knows?

A predicate is a way to match values. It can be:

A function
This is the most general. The function should take one to three arguments: (value, index|key, entire_collection)
Matches
If the source values are objects, you can specify an object with properties. All of the property values specified must match.
Property
If the source values are objects, this specifies a boolean property name. Any source objects whose property is true will be selected

By/With alternatives are available for many functions that comapre two values.

The bare function, e.g. _.uniq
Compares two values using ===. They must match exactly.
By, e.g. _.uniqBy
Compares two values by applying a function to each value, then comparing. For example, _.uniqBy(arr, Math.floor) gets all the unique integer values of a group of numbers.
With, e.g. _.uniqWith
Applies a comparison function between two values. This comparison function must accept two values and return a boolean.