Back to Es Toolkit

forIn (Lodash Compatibility)

docs/reference/compat/object/forIn.md

1.46.11.9 KB
Original Source

forIn (Lodash Compatibility)

::: warning Use Object.keys and for...in loop instead

This forIn function operates slowly due to handling null or undefined, setting up default iteratee, and more.

Instead, use the faster and more modern Object.keys and for...in loop.

:::

Iterates over all properties of an object (including inherited properties) and invokes a function for each property.

typescript
const result = forIn(obj, iteratee);

Usage

forIn(object, iteratee)

Iterates over all properties of an object and invokes the iteratee function. It iterates not only over the object's own properties but also over properties inherited through the prototype chain. If the iteratee function returns false, the iteration stops.

typescript
import { forIn } from 'es-toolkit/compat';

// Iterate over all properties of an object
const obj = { a: 1, b: 2 };
forIn(obj, (value, key) => {
  console.log(key, value);
});
// Output: 'a' 1, 'b' 2

// Iterate including inherited properties
function Parent() {
  this.inherited = 'value';
}
Parent.prototype.protoProperty = 'proto';

const child = new Parent();
child.own = 'ownValue';

forIn(child, (value, key) => {
  console.log(key, value);
});
// Output: 'inherited' 'value', 'own' 'ownValue', 'protoProperty' 'proto'

// Early exit based on condition
forIn(obj, (value, key) => {
  console.log(key, value);
  return key !== 'a'; // Stop after 'a'
});
// Output: 'a' 1

null or undefined is returned as is.

typescript
import { forIn } from 'es-toolkit/compat';

forIn(null, iteratee); // null
forIn(undefined, iteratee); // undefined

Parameters

  • object (T | null | undefined): The object to iterate over.
  • iteratee ((value: T[keyof T], key: string, collection: T) => any, optional): The function to invoke for each property. Defaults to the identity function.

Returns

(T | null | undefined): Returns the original object.