@jalik/extend

A utility to merge flat objects.

Usage no npm install needed!

<script type="module">
  import jalikExtend from 'https://cdn.skypack.dev/@jalik/extend';
</script>

README

@jalik/extend

GitHub package.json version Build Status GitHub GitHub last commit GitHub issues npm

A utility to merge flat objects.

Warning: This library is doing a "flat merge", so if you need to merge deep objects, use the following library instead: @jalik/deep-extend

Introduction

Useful to merge several objects into one, for creating a configuration based on default parameters for example.

Merging objects

In this example, all objects are merged into the first object, so the first object is modified, if you don't want to modify the object, pass en empty object {} as the first argument.

Note that objects are merged based on their order, so the 2nd object is merged in the first, then the 3rd is merged in the first, and so on...

import extend from "@jalik/extend";

const coldColors = {
  blue: "#0000FF",
  cyan: "#00FFFF",
  green: "#00FF00"
};

const hotColors = {
  yellow: "#FFFF00",
  orange: "#FFAA00",
  red: "#FF0000"
};

const result = extend({}, coldColors, hotColors);

The result:

{
  "blue": "#0000FF",
  "cyan": "#00FFFF",
  "green": "#00FF00",
  "yellow": "#FFFF00",
  "orange": "#FFAA00",
  "red": "#FF0000"
}

Merging arrays

Several arrays can be merged easily. Note that undefined values are ignored when merging.

import extend from "@jalik/extend";

const a = [0, 0, 0, 7];
const b = [0, 0, 3];
const c = [1, 3, undefined, undefined];

const result = extend([], a, b, c);

The result:

[1, 3, 3, 7]

Merging arrays into object

You can easily convert an array to an object with the extend method.

import extend from "@jalik/extend";

const numbers = [1, 3, 3, 7];
const object = { length: numbers.length };

const result = extend({}, object, numbers);

The result:

{
  "length": 4,
  "0": 1,
  "1": 3,
  "2": 3,
  "3": 7
}

Changelog

History of releases is in the changelog.

License

The code is released under the MIT License.