stringify-keys

Build an array of key paths from an object.
Please consider following this project's author, Brian Woodward, and consider starring the project to show your :heart: and support.
Install
Install with npm:
$ npm install --save stringify-keys
See the Release History for changes.
Usage
const stringify = require('stringify-keys');
let obj = { a: 'a', b: { c: { d: { e: 'f' } } } };
console.log(stringify(obj));
//=> [ 'a', 'b.c.d.e' ]
Include values in the result:
console.log(stringify(obj, { values: true }));
//=> { a: 'a', 'b.c.d.e': 'f' }
Keys with dots are automatically escaped with backslashes (this can be customized):
let obj = { 'a.b.c': { d: 'e' } };
console.log(stringify(obj));
//=> [ 'a\\.b\\.c.d' ]
console.log(stringify(obj, { values: true }));
//=> { 'a\\.b\\.c.d': 'e' }
Objects with arrays return the array indices as part of the paths:
let obj = { a: 'a', b: [{ c: { d: 'e' } }, { f: { g: 'h' } }] };
console.log(stringify(obj));
//=> [ 'a', 'b.0.c.d', 'b.1.f.g' ]
console.log(stringify(obj, { values: true }));
//=> { a: 'a', 'b.0.c.d': 'e', 'b.1.f.g': 'h' }
Options
options.separator
Type: string
Default: .
Custom separator to use for creating object paths (a.b.c
):
Example
let obj = { 'a.b.c': { d: 'e' } };
console.log(stringify(obj, { separator: '/' }));
//=> [ 'a.b.c/d' ]
console.log(stringify(obj, { separator: '/', values: true }));
//=> { 'a.b.c/d': 'e' }
options.escape
Type: function
Default: adds \\
before dots
Custom function to use for escaping keys.
Example
let obj = { 'a.b.c': { d: 'e' } };
let escape = str => str.split('.').join('/');
console.log(stringify(obj, { escape }));
//=> [ 'a/b/c.d' ]
console.log(stringify(obj, { escape, values: true }));
//=> { 'a/b/c.d': 'e' }
Release History
v3.0
- Redundant (parent) keys are no longer included in the output. Thus
{ a: { b: 'c' } }
now returns['a.b']
instead of['a', 'a.b']
.
v2.0
- Added support for traversing into arrays.
About
sh
$ npm install && npm test
sh
$ npm install -g verbose/verb#dev verb-generate-readme && verb
Related projects
You might also be interested in these projects:
- expand-hash: Recursively expands property keys with dot-notation into objects. | homepage
- expand-object: Expand a string into a JavaScript object using a simple notation. Use the CLI or… more | homepage
- glob-object: Filter an object using glob patterns and dot notation. | homepage
- kind-of: Get the native type of a value. | homepage
Contributors
Commits | Contributor |
---|---|
19 | doowb |
17 | jonschlinkert |
1 | contra |
Author
Brian Woodward
License
Copyright © 2019, Brian Woodward. Released under the MIT License.
This file was generated by verb-generate-readme, v0.8.0, on January 22, 2019.