1.0.1 • Published 9 years ago
has-deep v1.0.1
Has Deep
Slides
This module is designed to simplify the painful process of validating the deep properties of an object.
About
var a = {
b: {
c: {
d: {
e: true
}
}
}
};In JavaScript, if you try to find a property on an undefined, the script will throw an error.
This sucks.
// this throws your app
var x = a.b.c.d.e.f.g;The most common way to solve the problem is to have repetitious blocks of if-then code to slowly validate the property path.
This also sucks, but it works.
var x = (a && a.b && a.b.c && a.b.c.d && a.b.c.d.e && a.b.c.d.e.f && a.b.c.d.e.f.g) ? a.b.c.d.e.f.g : 'winning';
console.log(x); // => winningI'm writing this module to help make it suck less.
var has = require('has-deep');
var x = (has(a, 'b.c.d.e.f.g')) ? a.b.c.d.e.f.g : 'winning';
console.log(x); // => winningYeah, the result is the same, but look at how much less validation there is!
has(object, path)
object- Object This is the source object that you want to validate.path- String This is a period-delimited string that is the property path you want to validate.- Returns the value at the end of the
pathorundefinedif the path doesn't exist.
Example
var has = require('has-deep');
var a = {
b: {
c: {
d: {
e: 'winning!',
f: [{
g: false
}, {
g: true
}]
}
}
}
};
console.log(has(a, 'b.c.d.e.f.g')); // => undefined
console.log(has(a, 'b.c.d.e.f')); // => undefined
console.log(has(a, 'b.c.d.e')); // => "winning!"
console.log(has(a, 'b.c.d')); // => { e: "winning!" }
console.log(has(a, 'b.c.d.f[0].g')); // => false
console.log(has(a, 'b.c.d.f[1].g')); // => trueInstall
npm install has-deep-or-
npm install ben-bradley/has-deepTest
npm test-or-
mocha -R specVersions
- 1.0.1 - Catch when first property is bracketed
- 1.0.0 - Able to handle dotted properties
- 0.0.6 - Using
Object.prototype.toString.call(object) === '[object Object]'for whentoString()is overwritten =( - 0.0.4 - Providing a non-Object variabl for evaluation will return
undefinedinstead of Throwing - 0.0.3 - Refactored lib to be more functional, modified deep-array valitaion to detect falsey values, added comments
- 0.0.2 - Added deep-array validation
- 0.0.1 - Inital commit
