# Emulate underscore.js

## filter

agate’s `Table.where()` functions exactly like Underscore’s `filter`.

    new_table = table.where(lambda row: row['state'] == 'Texas')

## reject

To simulate Underscore’s `reject`, simply negate the return value of the function you pass into agate’s `Table.where()`.

    new_table = table.where(lambda row: not (row['state'] == 'Texas'))

## find

agate’s `Table.find()` works exactly like Underscore’s `find`.

    row = table.find(lambda row: row['state'].startswith('T'))

## any

The `Any` aggregation works like Underscore’s `any`.

    true_or_false = table.aggregate(Any('salaries', lambda d: d > 100000))

You can also use `Table.where()` to filter to columns that pass the truth test.

## all

The `All` aggregation works like Underscore’s `all`.

    true_or_false = table.aggregate(All('salaries', lambda d: d > 100000))