https://github.com/strikeentco/get
Get a property from a nested object using a dot path or custom separator
https://github.com/strikeentco/get
deep dot dot-path dot-prop fast get get-deep javascript key lodash lodash-get nested-value nodejs object object-path path small value
Last synced: about 1 month ago
JSON representation
Get a property from a nested object using a dot path or custom separator
- Host: GitHub
- URL: https://github.com/strikeentco/get
- Owner: strikeentco
- License: mit
- Created: 2018-03-17T22:40:36.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2018-07-20T09:58:53.000Z (almost 7 years ago)
- Last Synced: 2025-04-14T01:54:12.955Z (about 1 month ago)
- Topics: deep, dot, dot-path, dot-prop, fast, get, get-deep, javascript, key, lodash, lodash-get, nested-value, nodejs, object, object-path, path, small, value
- Language: JavaScript
- Homepage:
- Size: 64.5 KB
- Stars: 6
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
get [](https://github.com/strikeentco/get/blob/master/LICENSE) [](https://www.npmjs.com/package/@strikeentco/get)
==========
[](https://travis-ci.org/strikeentco/get) [](https://www.npmjs.com/package/@strikeentco/get) [](https://codeclimate.com/github/strikeentco/get/test_coverage)One of the smallest (*23 sloc*) and most effective implementations of getting a nested value from an object.
# Usage
```sh
$ npm install @strikeentco/get --save
``````javascript
const get = require('@strikeentco/get');get({ a: { b: 'c' } }, 'a.b');
//=> 'c'get({ a: { b: ['c', 'd'] } }, 'a.b.1');
//=> 'd'get({ a: { b: ['c', 'd'] } }, ['a', 'b']);
//=> ['c', 'd']get({ a: { b: 'c' } }, 'a.b.c.d');
//=> undefinedget({ a: { b: 'c' } }, 'a:b', ':');
//=> 'c'
```
## API### get(obj, path, [separator])
#### Params:
* **obj** (*Object*) - Source object.
* **path** (*String|Array*) - String or array with path.
* **[separator]** (*String*) - `.` by default.## Benchmarks
*(benchmarks were run on a Intel Core i5-6200U @ 2.30 GHz, 8 GB 2133 MHz DDR4)*```
# deep.js (175 bytes)
dot-prop x 633,102 ops/sec ±1.19% (85 runs sampled)
get-value x 1,138,909 ops/sec ±1.80% (87 runs sampled)
get x 2,066,525 ops/sec ±0.99% (90 runs sampled) - this library
getobject x 170,159 ops/sec ±1.17% (88 runs sampled)
lodash.get x 1,847,112 ops/sec ±0.60% (89 runs sampled)
object-path x 126,724 ops/sec ±2.33% (86 runs sampled)fastest is get - this library
# root.js (210 bytes)
dot-prop x 3,056,017 ops/sec ±1.84% (86 runs sampled)
get-value x 11,121,668 ops/sec ±1.04% (87 runs sampled)
get x 4,160,982 ops/sec ±1.06% (88 runs sampled) - this library
getobject x 1,004,785 ops/sec ±1.19% (88 runs sampled)
lodash.get x 6,529,634 ops/sec ±0.69% (90 runs sampled)
object-path x 1,976,993 ops/sec ±1.97% (86 runs sampled)fastest is get-value
# shallow.js (84 bytes)
dot-prop x 1,965,057 ops/sec ±1.64% (89 runs sampled)
get-value x 2,697,800 ops/sec ±1.13% (87 runs sampled)
get x 3,529,218 ops/sec ±1.13% (87 runs sampled) - this library
getobject x 576,927 ops/sec ±1.04% (88 runs sampled)
lodash.get x 3,145,038 ops/sec ±2.11% (87 runs sampled)
object-path x 595,264 ops/sec ±3.33% (82 runs sampled)fastest is get - this library
```Benchmark from [`jonschlinkert/get-value`](https://github.com/jonschlinkert/get-value/tree/master/benchmark) library.
## License
The MIT License (MIT)
Copyright (c) 2018 Alexey Bystrov