Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

for-each-property-deep

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

for-each-property-deep

Executes a callback for each property found on a object, recursively on nested properties, with options regarding enumerability (enumerable or non-enumerable) and ownership (inherited or only own properties). It excludes built-in properties from Object an

  • 0.0.3
  • latest
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

for-each-property-deep

Build Status

Executes a callback for each property found on a object, recursively on nested properties, with options regarding enumerability (enumerable or non-enumerable) and ownership (inherited or only own properties). It excludes built-in properties from Object and Function prototypes by default, and this behaviour can also be configured via options.

Goal

The goal is to provide a way to iterate through object's properties with a clean interface regarding enumerability and ownership, e.g. { enumerability: 'enumerable', inherited: true }. Also, discarding (or not, is an option) the built-in properties that may be found when looking up on the prototype-chain.

This module is the recursive version, which will traverse object's nested properties, of for-each-property.

Usage


const forEachPropertyDeep = require('for-each-property-deep');

const object = { a: { b: { c: 'cValue'} } };
const callback = (value, key, path, parent, state) => console.log(key, path);
const options = {enumerability: 'enumerable', inherited: false};

const resultState = forEachPropertyDeep(object, callback, options);

// All outputs (console.log) from callback will be:
// a [ 'a' ]
// b [ 'a', 'b' ]
// c [ 'a', 'b', 'c' ]

object: Literal object, Object Instance, Class Reference... Any object whose properties can be iterated on.

callback: Function that will receive (value, key, path, parent, state).

  • value Current property value

  • key Current property name

  • path An array representing the current property path. e.g. from the above example it will be [ 'a', 'b', 'c' ] for the 'c' property

  • parent The parent object of the current property. e.g. from the above example it will be the object { c: 'cValue' } for the 'c' property

  • state Is an object that will be stateful throughall iterations, and it will be the value returned by calling forEachPropertyDeep. It can be useful to handle any data from within the callback function, instead of relying on external variables. e.g., to store and get all the paths found.

options:

  • enumerability: The options are: 'enumerable' (default), 'nonenumerable' or 'all'

  • inherited: The options are: true (default) or false

  • excludeBuiltInPropsOf: An array of objects whose prototype properties must be excluded. It defaults to [Function, Object]

  • excludeProps: An array properties that must be excluded. The default is ['prototype']

Example

To check an extended example on use cases regarding enumerability and ownership check for-each-property#example.

Keywords

FAQs

Package last updated on 28 May 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc