Skip to content

TypeScript utility to transform nested objects using a dot notation path.

License

Notifications You must be signed in to change notification settings

egmacke/ts-dot-prop

 
 

Repository files navigation

NPM Version CI Dev Dependency Status codecov

ts-dot-prop

TypeScript utility to transform nested objects using a dot notation path.

Installation

npm install ts-dot-prop

Usage

import * as dot from 'ts-dot-prop';

const obj = {
  foo: 'bar',
  state: {
    name: 'New York',
  },
  fruit: [
    {
      type: 'Apple',
      color: 'red',
    },
    {
      type: 'Mango',
      color: 'orange',
    },
  ],
};

/**
 * Get
 */
dot.get(obj, 'state.name');
// => 'New York'

dot.get(obj, 'fruit[0].type');
// => 'Apple'

dot.get(obj, 'fruit[*].color');
// => ['red', 'orange']

dot.get(obj, 'state.capital');
// => undefined

dot.get(obj, 'state.population.total', 'not found');
// => 'not found'

/**
 * Set
 */
dot.set(obj, 'state.name', 'Paris');
// => state.name === 'Paris'

dot.set(obj, 'state.capital', 'Albany');
// => state.capital === 'Albany'

dot.set(obj, 'fruit[0].color', 'Green');
// => fruit[0].color === 'Green'

dot.set(obj, 'fruit[*].color', 'Yellow');
// => fruit[0].color === 'Yellow'
// => fruit[1].color === 'Yellow'

/**
 * Has
 */
dot.has(obj, 'state.name');
// => true

dot.has(obj, 'fruit[0].type');
// => true

/**
 * Remove
 */
dot.remove(obj, 'state.name');
// => state.name === undefined

dot.remove(obj, 'fruit[0].color');
// => fruit[0].color === undefined

/**
 * Paths
 */
dot.paths(obj);
// => ['foo', 'state.name', 'fruit']

About

TypeScript utility to transform nested objects using a dot notation path.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 93.6%
  • JavaScript 6.4%