Improve this Doc View Source

Determines if two objects or two values are equivalent. Supports value types, regular expressions, arrays and objects.

Two objects or values are considered equivalent if at least one of the following is true:

- Both objects or values pass `===` comparison.
- Both objects or values are of the same type and all of their properties are equal by comparing them with `angular.equals`.
- Both values are NaN. (In JavaScript, NaN == NaN => false. But we consider two NaN as equal)
- Both values represent the same regular expression (In JavaScript, /abc/ == /abc/ => false. But we consider two regular expressions as equal when their textual representation matches).

During a property comparison, properties of `function` type and properties with names that begin with `$` are ignored.

Scope and DOMWindow objects are being compared only by identify (`===`).

## Usage

`angular.equals(o1, o2);`

### Arguments

Param | Type | Details
--- | --- | ---
o1 | * | Object or value to compare.
o2 | * | Object or value to compare.

### Returns

boolean | True if arguments are equal.

## Examples

    <div ng-controller="ExampleController">
      <form novalidate>
        <h3>User 1</h3>
        Name: <input type="text" ng-model="user1.name">
        Age: <input type="number" ng-model="user1.age">

        <h3>User 2</h3>
        Name: <input type="text" ng-model="user2.name">
        Age: <input type="number" ng-model="user2.age">

        <div>
          <br/>
          <input type="button" value="Compare" ng-click="compare()">
        </div>
        User 1: <pre>{{user1 | json}}</pre>
        User 2: <pre>{{user2 | json}}</pre>
        Equal: <pre>{{result}}</pre>
      </form>
    </div>

    angular.module('equalsExample', []).controller('ExampleController', ['$scope', function($scope) {
      $scope.user1 = {};
      $scope.user2 = {};
      $scope.compare = function() {
        $scope.result = angular.equals($scope.user1, $scope.user2);
      };
    }]);