1.1.0 • Published 10 years ago

propfinder v1.1.0

Weekly downloads
1
License
BSD-3-Clause
Repository
github
Last release
10 years ago

propfinder

A micro library to find a property on an object. It was specifically written to solve this problem:

if (foo && foo.bar && foo.bar.baz === 'something') {}

You cannot just write the following because you might have a ReferenceError thrown.

if (foo.bar.baz === 'something') {}

But with propfinder you can do:

if (propfinder('bar.baz', foo) === 'something') {}

If the property does not exist, propfinder will return undefined.

It is curryable, so you can do stuff like this:

var someJsonStructure = {
    meta: {
        id: 123
    },
    ...
};

var someOtherJsonStructure = {
    error: "Not found"
}

var getId = propfinder('meta.id');

var id = getId(someJsonStructure); // => 123

var id2 = getId(someOtherJsonStructure); // => undefined

It takes a method as the third optional argument.

propfinder('foo', { foo: 'bar' }, function (value) {
    console.log('we found the value', value, 'in the object on the key foo';
});

The return value from the optional method is also returned from propfinder.

var resultId = propfinder('person', contactsJsonData, function (person) {
    return person.firstName + ' ' + person.lastName;
});

It should work in all ES3 browsers and in node.