@alizeait/ unflatto (帮助)

一个小(~210B)和 快点 平整对象扩展器, 未平面
使用一个已经平整的对象,并通过扩展键返回一个新的嵌入对象.
它假设钥匙被一个 . 默认情况下,但此选项可以更改为任何带有分隔符选项的选项.
安装
$ npm install @alizeait/unflatto
使用量
import { unflatto } from "@alizeait/unflatto";
const unflattened = unflatto(
{
"key1.keyA": "valueI",
"key2.keyB": "valueII",
"key3.a.b.c": 2,
"key4": [],
"key5.a.0": "value1",
"key5.a.1": "value2",
"key5.a.2.key1.keyA": "valueI",
"key5.a.2.key1.keyB.0": 1,
"key5.a.2.key1.keyB.1": 2,
"key5.a.2.key1.keyB.2": 3,
"key5.a.2.key1.keyB.3": 4,
"key5.b": null,
"key5.c": undefined,
"key6": {}
}
/*
{
key1: {
keyA: "valueI",
},
key2: {
keyB: "valueII",
},
key3: { a: { b: { c: 2 } } },
key4: [],
key5: {
a: [
"value1",
"value2",
{
key1: {
keyA: "valueI",
keyB: [1, 2, 3, 4],
},
},
],
b: null,
c: undefined,
},
key6: {},
});
*/
const unflattoCustom = unflatto({
"key1-keyA": "valueI",
"key2-keyB": "valueII",
"key3-a-b-c": 2,
},"-");
/*
{
key1: {
keyA: "valueI",
},
key2: {
keyB: "valueII",
},
key3: { a: { b: { c: 2 } } },
}
*/
基准
Benchmarks:
flat.unflatten x 63,827 ops/sec ±0.95% (89 runs sampled)
@alizeait/unflatto x 208,279 ops/sec ±0.84% (93 runs sampled)
obj-unflatten x 168,569 ops/sec ±0.68% (92 runs sampled)
运行于 Node.js v12.13.0, 64-bit OS, Intel(R) Core(TM) i5-6600K CPU @ 3.50GHz, 16.0 GB RAM
验证
Validation:
flat.unflatten ✔
@alizeait/unflatto ✔
obj-unflatten ✘
Wrongly expands arrays
API 密码
解充( 输入: 对象、 分隔符? : 字符串)
回返情况: Object | Array
返回新的扩展对象/阵列.