dot-prop alternatives and similar modules
Based on the "Miscellaneous" category.
Alternatively, view dot-prop alternatives based on common mentions on social networks and blogs.
-
Electron
:electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS -
cheerio
The fast, flexible, and elegant library for parsing and manipulating HTML and XML. -
jsdom
A JavaScript implementation of various web standards, for use with Node.js -
patch-package
Fix broken node modules instantly ππ½ββοΈπ¨ -
ssh2
SSH2 client and server modules written in pure JavaScript for node.js -
hypernova
A service for server-side rendering your JavaScript views -
webworker-threads
Lightweight Web Worker API implementation with native threads -
node-pre-gyp
Node.js tool for easy binary deployment of C++ addons -
mem
Memoize functions - an optimization technique used to speed up consecutive function calls by caching the result of calls with identical input -
basic-ftp
FTP client for Node.js, supports FTPS over TLS, passive mode over IPv6, async/await, and Typescript. -
schemapack
Create a schema object to encode/decode your JSON in to a compact byte buffer with no overhead. -
nar
node.js application archive - create self-contained binary like executable applications that are ready to ship and run -
cashify
πΈ Lightweight currency conversion library, successor of money.js -
stringify-object
Stringify an object/array like JSON.stringify just without all the double-quotes -
node-video-lib
Node.js Video Library / MP4 & FLV parser / MP4 builder / HLS muxer -
resolve-from
Resolve the path of a module like require.resolve() but from a given path
A Non-Cloud Alternative to Google Forms that has it all.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of dot-prop or a related project?
README
dot-prop
Get, set, or delete a property from a nested object using a dot path
Install
npm install dot-prop
Usage
import {getProperty, setProperty, hasProperty, deleteProperty} from 'dot-prop';
// Getter
getProperty({foo: {bar: 'unicorn'}}, 'foo.bar');
//=> 'unicorn'
getProperty({foo: {bar: 'a'}}, 'foo.notDefined.deep');
//=> undefined
getProperty({foo: {bar: 'a'}}, 'foo.notDefined.deep', 'default value');
//=> 'default value'
getProperty({foo: {'dot.dot': 'unicorn'}}, 'foo.dot\\.dot');
//=> 'unicorn'
getProperty({foo: [{bar: 'unicorn'}]}, 'foo[0].bar');
//=> 'unicorn'
// Setter
const object = {foo: {bar: 'a'}};
setProperty(object, 'foo.bar', 'b');
console.log(object);
//=> {foo: {bar: 'b'}}
const foo = setProperty({}, 'foo.bar', 'c');
console.log(foo);
//=> {foo: {bar: 'c'}}
setProperty(object, 'foo.baz', 'x');
console.log(object);
//=> {foo: {bar: 'b', baz: 'x'}}
setProperty(object, 'foo.biz[0]', 'a');
console.log(object);
//=> {foo: {bar: 'b', baz: 'x', biz: ['a']}}
// Has
hasProperty({foo: {bar: 'unicorn'}}, 'foo.bar');
//=> true
// Deleter
const object = {foo: {bar: 'a'}};
deleteProperty(object, 'foo.bar');
console.log(object);
//=> {foo: {}}
object.foo.bar = {x: 'y', y: 'x'};
deleteProperty(object, 'foo.bar.x');
console.log(object);
//=> {foo: {bar: {y: 'x'}}}
API
getProperty(object, path, defaultValue?)
Get the value of the property at the given path.
Returns the value if any.
setProperty(object, path, value)
Set the property at the given path to the given value.
Returns the object.
hasProperty(object, path)
Check whether the property at the given path exists.
Returns a boolean.
deleteProperty(object, path)
Delete the property at the given path.
Returns a boolean of whether the property existed before being deleted.
escapePath(path)
Escape special characters in a path. Useful for sanitizing user input.
import {getProperty, escapePath} from 'dot-prop';
const object = {
foo: {
bar: 'πΈπ» You found me Mario!',
},
'foo.bar' : 'π The princess is in another castle!',
};
const escapedPath = escapePath('foo.bar');
console.log(getProperty(object, escapedPath));
//=> 'π The princess is in another castle!'
deepKeys(object)
Returns an array of every path. Plain objects are deeply recursed and are not themselves included.
This can be useful to help flatten an object for an API that only accepts key-value pairs or for a tagged template literal.
import {getProperty, deepKeys} from 'dot-prop';
const user = {
name: {
first: 'Richie',
last: 'Bendall',
},
};
for (const property of deepKeys(user)) {
console.log(`${property}: ${getProperty(user, property)}`);
//=> name.first: Richie
//=> name.last: Bendall
}
object
Type: object | array
Object or array to get, set, or delete the path
value.
You are allowed to pass in undefined
as the object to the get
and has
functions.
path
Type: string
Path of the property in the object, using .
to separate each nested key.
Use \\.
if you have a .
in the key.
The following path components are invalid and results in undefined
being returned: __proto__
, prototype
, constructor
.
value
Type: unknown
Value to set at path
.
defaultValue
Type: unknown
Default value.
Get professional support for this package with a Tidelift subscription Tidelift helps make open source sustainable for maintainers while giving companiesassurances about security, maintenance, and licensing for their dependencies.