
{{alias}}( obj, [options,] predicate )
    Splits values into two groups according to a predicate function.

    When invoked, the predicate function is provided two arguments:

    - `value`: object value
    - `key`: object key

    If a predicate function returns a truthy value, a value is placed in the
    first group; otherwise, a value is placed in the second group.

    If provided an empty object, the function returns an empty array.

    The function iterates over an object's own properties.

    Key iteration order is *not* guaranteed, and, thus, result order is *not*
    guaranteed.

    Parameters
    ----------
    obj: Object|Array|TypedArray
        Input object to group.

    options: Object (optional)
        Options.

    options.thisArg: any (optional)
        Execution context.

    options.returns: string (optional)
        If `values`, values are returned; if `keys`, keys are returned; if `*`,
        both keys and values are returned. Default: 'values'.

    predicate: Function
        Predicate function indicating which group a value in the input object
        belongs to.

    Returns
    -------
    out: Array<Array>|Array
        Group results.

    Examples
    --------
    > function predicate( v ) { return v[ 0 ] === 'b'; };
    > var obj = { 'a': 'beep', 'b': 'boop', 'c': 'foo', 'd': 'bar' };
    > var out = {{alias}}( obj, predicate )
    [ [ 'beep', 'boop', 'bar' ], [ 'foo' ] ]

    // Output group results as keys:
    > var opts = { 'returns': 'keys' };
    > out = {{alias}}( obj, opts, predicate )
    [ [ 'a', 'b', 'd' ], [ 'c' ] ]

    // Output group results as key-value pairs:
    > opts = { 'returns': '*' };
    > out = {{alias}}( obj, opts, predicate )
    [ [ ['a', 'beep'], ['b', 'boop'], ['d', 'bar'] ], [ ['c', 'foo' ] ] ]

    See Also
    --------

