https://github.com/nikaple/uni-flatten
Flattens a nested object, or convert it back **perfectly**.
https://github.com/nikaple/uni-flatten
Last synced: about 1 year ago
JSON representation
Flattens a nested object, or convert it back **perfectly**.
- Host: GitHub
- URL: https://github.com/nikaple/uni-flatten
- Owner: Nikaple
- License: mit
- Created: 2023-08-01T06:21:02.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-11-11T19:44:28.000Z (over 1 year ago)
- Last Synced: 2024-11-11T20:30:31.420Z (over 1 year ago)
- Language: TypeScript
- Homepage:
- Size: 1.1 MB
- Stars: 6
- Watchers: 3
- Forks: 0
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Changelog: changelog.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
Uni-flatten
## Features
## Installation
```bash
$ npm i --save uni-flatten
```
## Inspiration
There are various popular modules to flatten an object, but they lost context such as numeric keys, dot in object key, special characters etc. These behaviors disabled converting flattened object to original object. This is when `uni-flatten` becomes handy.
## Quick Start
### Flatten a nested object
```ts
import { flatten } from 'uni-flatten';
flatten({
a: {
b: {
c: 123,
},
d: [
{
e: { f: 456 },
},
],
},
'a.b.c': 789,
});
/*
result:
{
'a.b.c': 123, // normal nested object
'a.d[0].e.f': 456, // nested object array, use brackets to represent array index
'["a.b.c"]': 789, // object with special character in keys
},
*/
```
### Unflatten a flat object
```ts
import { unflatten } from 'uni-flatten';
unflatten({
'a.b.c': 123, // normal nested object
'a.d[0].e.f': 456, // nested object array, use brackets to represent array index
'["a.b.c"]': 789, // object with special character in keys
});
/*
result:
{
a: {
b: {
c: 123,
},
d: [
{
e: { f: 456 },
},
],
},
'a.b.c': 789,
}
*/
```
### Flatten a cyclic object
Circular references are serialized as `[Circular->""]` when flattened, which is useful for unflattening.
```ts
import { flatten, unflatten } from 'uni-flatten';
const obj = { a: { b: { c: 1 } } };
obj.a.d = obj.a;
const flattened = flatten(obj); // { 'a.b.c': 1, 'a.d': '[Circular->"a"]' }
const restored = unflatten(obj); // { a: { b: { c: 1 }, d: [Circular *1] }
```
## API
Please refer to our [API website](https://nikaple.github.io/uni-flatten) for full documentation.
## Changelog
Please refer to [changelog.md](https://github.com/Nikaple/uni-flatten/blob/main/changelog.md)
## License
[MIT](LICENSE).
## Star History
[](https://star-history.com/#Nikaple/uni-flatten&Date)