mirror of
https://github.com/CharaChorder/DeviceManager.git
synced 2026-01-19 00:13:01 +00:00
94 lines
2.6 KiB
Markdown
94 lines
2.6 KiB
Markdown
# ✊ (dash) get
|
|
|
|
[](https://travis-ci.org/ItsJonQ/dash-get)
|
|
[](https://badge.fury.io/js/dash-get)
|
|
|
|
> A tiny get function', similar to Lodash.get
|
|
|
|
## ✨ Features
|
|
|
|
- **Zero dependencies**!
|
|
- Super tiny, at ~200 bytes gzipped
|
|
- Works almost exactly like [Lodash.get](https://lodash.com/docs/4.17.11#get)
|
|
- Ultra speedy! Check out the [performance tests](https://jsperf.com/get-try-catch-vs-reduce-vs-lodash-get)
|
|
|
|
## 🔧 Installation
|
|
|
|
Add `dash-get` to your project via `npm install`:
|
|
|
|
```
|
|
npm install --save dash-get
|
|
```
|
|
|
|
## 🕹 Usage
|
|
|
|
You can easily retrieve a value from a (deeply) nested object with `dash-get`, like so:
|
|
|
|
```js
|
|
import get from 'dash-get'
|
|
|
|
const someObject = {...}
|
|
|
|
const deeplyNestedValue = get(someObject, 'the.path.to.the.nested.value')
|
|
// value
|
|
```
|
|
|
|
The path could also be an `Array`:
|
|
|
|
```js
|
|
const someObject = {...}
|
|
|
|
const deeplyNestedValue = get(someObject, ['the', 'path', 'to', 'the', 'nested', 'value'])
|
|
// value
|
|
```
|
|
|
|
## 🎬 API
|
|
|
|
#### `get(obj, path, fallback)`
|
|
|
|
| Argument | Type | Description |
|
|
| -------- | ------------------------ | --------------------------------------------------------------------- |
|
|
| obj | `Object` | The object to get the value from. |
|
|
| path | `Array<string>`/`string` | The path to the value. |
|
|
| fallback | `any` | The fallback value, in case the desired value could not be retrieved. |
|
|
|
|
## 👻 Unsupported feature
|
|
|
|
This module does not support this particular use case:
|
|
|
|
```
|
|
get(object, 'a[0].b.c')
|
|
```
|
|
|
|
## 🤔 Why an npm module tho?
|
|
|
|
You totally don't have to `npm install` this. This exists for convenience purposes 😊.
|
|
|
|
In fact, it's encouraged that you add the `get` code to your code base! One less depenency to install and manage.
|
|
|
|
Here it is!
|
|
|
|
```js
|
|
function get(obj, path, fallback) {
|
|
if (!obj || !path) return fallback;
|
|
const paths = Array.isArray(path) ? path : path.split(".");
|
|
let results = obj;
|
|
let i = 0;
|
|
|
|
while (i < paths.length && results !== undefined && results !== null) {
|
|
results = results[paths[i]];
|
|
i++;
|
|
}
|
|
|
|
if (i === paths.length) {
|
|
return results !== undefined ? results : fallback;
|
|
}
|
|
|
|
return results !== undefined && results !== null ? results : fallback;
|
|
}
|
|
```
|
|
|
|
## ❤️ Thanks
|
|
|
|
Thanks to [@knicklabs](https://github.com/knicklabs) for pairing with me on this one!
|