dottie
    DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/dottie package

    2.0.2 • Public • Published

    Build Status

    Dottie helps you easily (and without sacrificing too much performance) look up and play with nested keys in objects, without them throwing up in your face.

    Install

    npm install dottie
    

    Usage

    For detailed usage, check source or tests.

    Get value

    Gets nested value, or undefined if unreachable, or a default value if passed.

    var values = {
      some: {
        nested: {
            key: 'foobar';
        }
      },
      'some.dot.included': {
        key: 'barfoo'
      }
    }
     
    dottie.get(values, 'some.nested.key'); // returns 'foobar'
    dottie.get(values, 'some.undefined.key'); // returns undefined
    dottie.get(values, 'some.undefined.key', 'defaultval'); // returns 'defaultval'
    dottie.get(values, ['some.dot.included', 'key']); // returns 'barfoo'

    Note: lodash.get() also works fine for this

    Set value

    Sets nested value, creates nested structure if needed

    dottie.set(values, 'some.nested.value', someValue);
    dottie.set(values, ['some.dot.included', 'value'], someValue);
    dottie.set(values, 'some.nested.object', someValue, {
      force: true // force overwrite defined non-object keys into objects if needed
    });

    Transform object

    Transform object from keys with dottie notation to nested objects

    var values = {
      'user.name': 'Gummy Bear',
      'user.email': 'gummybear@candymountain.com',
      'user.professional.title': 'King',
      'user.professional.employer': 'Candy Mountain'
    };
    var transformed = dottie.transform(values);
     
    /*
    {
      user: {
        name: 'Gummy Bear',
        email: 'gummybear@candymountain.com',
        professional: {
          title: 'King',
          employer: 'Candy Mountain'
        }
      }
    }
    */

    With a custom delimiter

    var values = {
      'user_name': 'Mick Hansen',
      'user_email': 'maker@mhansen.io'
    };
    var transformed = dottie.transform(values, { delimiter: '_' });
     
    /*
    {
      user: {
        name: 'Mick Hansen',
        email: 'maker@mhansen.io'
      }
    }
    */

    Get paths in object

    var object = {
      a: 1,
      b: {
        c: 2,
        d: { e: 3 }
      }
    };
     
    dottie.paths(object); // ["a", "b.c", "b.d.e"];

    Performance

    0.3.1 and up ships with dottie.memoizePath: true by default, if this causes any bugs, please try setting it to false

    License

    MIT

    Keywords

    none

    Install

    npm i dottie

    DownloadsWeekly Downloads

    1,206,639

    Version

    2.0.2

    License

    MIT

    Unpacked Size

    10.2 kB

    Total Files

    4

    Last publish

    Collaborators

    • mickhansen