UNPKG

safe-navigator

Version:
53 lines (35 loc) 2.37 kB
# safe-navigator A safe navigation operator for javascript that allows you to access nested objects without throwing an error if you try to access the key of an undefined value. Install with `npm i safe-navigator` ## How does it work ? If you want to access **obj.key1.key2.key3**, you can import the package as safe and try **safe(obj, "key1.key2.key3")** and even if key1 does not contain a key called key2 and you try to access key3 in an undefined value of key2, the function will return the value of undefined without throwing an error. If you pass a third argument to **safe(obj, "key1.key2.key3", [])**, incase the value is undefined, the fallback will be returned by safe. If you don't pass a second parameter to the function, the object passed as first parameter will be returned. If you dont return any parameters, the function will return undefined. #Updates v1.1.0 : Added support for accessing array in a nested javascript object. v1.1.2 : Added a fallback as third argument to safe function ## Example: const farm = { farmer: { name: 'Steve' } }; console.log(farm.farmer.name); //will return 'Steve' console.log(farm.farmer.name.age.old); //will throw an error ## Now lets try it with safe const safe = require('safe-navigator'); const farm = { farmer: { name: 'Steve' } }; console.log(safe(farm, 'farmer.name.age.old')); // undefined. console.log(safe(farm, 'farmer.name')); // will return 'Steve' Update v1.1.1: Fallback console.log(safe(farm, 'farmer.name.age.old', "fallback")); // will return 'fallback'. Update v1.1.0: Arrays inside nested Objects const farm = { farmer: { name: 'Steve', farmAnimals: ['Horse', 'Cow'], animalDetails: [ {horse: { name: 'john'} }, { cow: { name: 'sam' } }], pairs: [['john','michelle'], ['sam','edna']] } }; console.log(safe(farm, 'farmer.farmAnimals[0]')); // will return 'Horse' console.log(safe(farm, 'farmer.animalDetails[0].horse.name')); // will return 'john'; Note: 2D or multi-dmensional arrays are not natively supported in the string passed to safe. To work with multi-dimensional arrays, use [] after the safe fn returns the parent array. console.log(safe(farm, 'farmer.pairs[0]')[1]); // returns 'michelle'