# angular.Array.count

## Description

Determines the number of elements in an array. Optionally it will count only those elements for which the `condition` evaluates to `true`.

Note: this function is used to augment the `Array` type in angular expressions. See `angular.Array` for more info.

## Usage

    angular.Array.count(array[, condition]);

### Parameters

- `array – {Array} –`

  The array to count elements in.

- `condition(optional) – {(function()|string)} –`

  A function to be evaluated or angular expression to be compiled and evaluated. The element that is currently being iterated over, is exposed to the `condition` as `this`.

### Returns

`{number}` –

Number of elements in the array (for which the condition evaluates to true).

## Example

      <pre ng:init="items = [{name:'knife', points:1},
                             {name:'fork', points:3},
                             {name:'spoon', points:1}]"></pre>
      <ul>
        <li ng:repeat="item in items">
           {{item.name}}: points=
           <input type="text" name="item.points"/> <!-- id="item{{$index}} -->
        </li>
      </ul>
      <p>Number of items which have one point: <em>{{ items.$count('points==1') }}</em></p>
      <p>Number of items which have more than one point: <em>{{items.$count('points&gt;1')}}</em></p>

      it('should calculate counts', function() {
        expect(binding('items.$count(\'points==1\')')).toEqual(2);
        expect(binding('items.$count(\'points>1\')')).toEqual(1);
      });

      it('should recalculate when updated', function() {
        using('.doc-example-live li:first-child').input('item.points').enter('23');
        expect(binding('items.$count(\'points==1\')')).toEqual(1);
        expect(binding('items.$count(\'points>1\')')).toEqual(2);
      });