0.1.4 • Published 8 years ago

reach-deep v0.1.4

Weekly downloads
1
License
MIT
Repository
github
Last release
8 years ago

reach-deep

Tired of cannot read property "xyz" of undefined ? This tiny utility helps to reach nested objects.

Install

$ npm install reach-deep

Require

var reach = require("reach-deep");

Description:

Returns the value of a nested property of source object if it exists. Even if the nested property evaluates to false it will be returned. If the nested property does not exist, undefined will be returned.

Benchmark

Is about 4 times faster than "reach" module. To test the performance with micro-benchmark run:

$ npm run benchmark

Signature

/**
* @param {Object} source       source object
* @param {String} path         path without first dot e.g. "response.http.statusCode"
* @param {String} [sourceName]  if provided, any caught error will be logged to console
* @returns {*}                 value under the source.path or undefined
*/
function reach(source, path, sourceName){..}

Examples:

Simple reach

var object ={
   a: {
      b: {
         c : 'data'
      }
   }
};

var result = reach(object, 'a.b.c'); // 'data'
var resultNotExisting = reach(object, 'a.b.c.d.e.f'); // undefined

Complex reach

var mock = {
        a: function () {
            return {
                b: {
                    c: [
                        {},
                        {
                            "d": {
                                e: 'expected'
                            }
                        }
                    ]
                }
            }
        }
    };
var result = reach(mock, 'a().b.c[1]["d"].e'); // 'expected'

Reach verbose

var mock = {};
reach(mock, 'a().b.c[1]["d"].e', 'mock'); // logs to console: TypeError['mock.a is not a function']
0.1.4

8 years ago

0.1.3

8 years ago

0.1.2

8 years ago

0.1.1

8 years ago

0.1.0

8 years ago