@alizeait/flatto
TypeScript icon, indicating that this package has built-in type declarations

2.0.0 • Public • Published

@alizeait/flatto Check Coverage

A tiny (~200B) and super fast nested object flattener.

Takes a nested object/array and returns a flattened object, e.i. an object with a single nested level.

It seperates the keys with a . by default but this can be changed to anything with the seperator option.

Installation

$ npm install @alizeait/flatto

Usage

import { flatto } from "@alizeait/flatto";

const flattened = flatto({
  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: {},
});

/*
{
  "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": {}
}
  */

const flattoCustom = flatto(
  {
    key1: {
      keyA: "valueI",
    },
    key2: {
      keyB: "valueII",
    },
    key3: { a: { b: { c: 2 } } },
  },
  "-"
);

/*
{
  "key1-keyA": "valueI",
  "key2-keyB": "valueII",
  "key3-a-b-c": 2,
}
*/

Benchmarks

Benchmarks:
  flat                         x 139,061 ops/sec ±0.70% (90 runs sampled)
  objnest                      x 52,776 ops/sec ±0.48% (90 runs sampled)
  @alizeait/flatto             x 335,535 ops/sec ±0.45% (94 runs sampled)
  flatify-obj                  x 103,834 ops/sec ±0.78% (93 runs sampled)

Running on Node.js v12.13.0, 64-bit OS, Intel(R) Core(TM) i5-6600K CPU @ 3.50GHz, 16.0 GB RAM

API

flatto(input: Object | Array, seperator?:string)

Returns: Object

Returns a new flattened object that is only one level deep.

If the input is not an object or an array, the input itself is returned instead of an object.

Package Sidebar

Install

npm i @alizeait/flatto

Weekly Downloads

681

Version

2.0.0

License

MIT

Unpacked Size

8.24 kB

Total Files

8

Last publish

Collaborators

  • alizeait