# `filter` (filter in module `ng` )

Improve this doc

## Description

Selects a subset of items from `array` and returns it as a new array.

Note: This function is used to augment the `Array` type in Angular expressions. See `ng.$filter` for more information about Angular arrays.

## Usage

### In HTML Template Binding

`{{ filter_expression | filter:expression:comparator }}`

### In JavaScript

`$filter('filter')(array, expression, comparator)`

### Parameters

- `array – {Array} –`

  The source array.

- `expression – {string|Object|function()} –`

  The predicate to be used for selecting items from `array`.

  Can be one of:

  - `string`: Predicate that results in a substring match using the value of `expression` string. All strings or objects with string properties in `array` that contain this string will be returned. The predicate can be negated by prefixing the string with `!`.

  - `Object`: A pattern object can be used to filter specific properties on objects contained by `array`. For example `{name:"M", phone:"1"}` predicate will return an array of items which have property `name` containing "M" and property `phone` containing "1". A special property name `$` can be used (as in `{$:"text"}`) to accept a match against any property of the object. That's equivalent to the simple substring match with a `string` as described above.

  - `function`: A predicate function can be used to write arbitrary filters. The function is called for each element of `array`. The final result is an array of those elements that the predicate returned true for.

- `comparator – {function(expected, actual)|true|undefined} –`

  Comparator which is used in determining if the expected value (from the filter expression) and actual value (from the object in the array) should be considered a match.

  Can be one of:

  - `function(expected, actual)`: The function will be given the object value and the predicate value to compare and should return true if the item should be included in filtered result.

  - `true`: A shorthand for `function(expected, actual) { return angular.equals(expected, actual)}`. this is essentially strict comparison of expected and actual.

  - `false|undefined`: A short hand for a function which will look for a substring match in case insensitive way.

## Example

#### Source

#### Demo