# Function forEach

- forEach(obj, iterator, context): any

- Invokes the `iterator` function once for each item in `obj` collection, which can be either an object or an array. The `iterator` function is invoked with `iterator(value, key, obj)`, where `value` is the value of an object property or an array element, `key` is the object property key or array element index and obj is the `obj` itself. Specifying a `context` for the function is optional.

  It is worth noting that `.forEach` does not iterate over inherited properties because it filters using the `hasOwnProperty` method.

  Unlike ES262's Array.prototype.forEach, providing 'undefined' or 'null' values for `obj` will not throw a TypeError, but rather just return the value provided.

        let values = {name: 'misko', gender: 'male'};
        let log = [];
        forEach(values, function(value, key) {
          this.push(key + ': ' + value);
        }, log);
        expect(log).toEqual(['name: misko', 'gender: male']);

  #### Parameters

  - obj: any

    Object to iterate over.

  - iterator: Function

    Iterator function.

  - context: any

    Object to become context (`this`) for the iterator function.

  #### Returns any

  Reference to `obj`.

  - Defined in shared/utils.js:319