array-merge-by-key

1.0.1 • Public • Published

array-merge-by-key

npm License Build Status

Effectively merge arrays of objects into a single array by merging objects with the same key (property). Also use this module to merge objects with the same property value in one array.

This is a micro module, which includes light and well-tested code.

Example

import mergeByKey from "array-merge-by-key";
 
const array1 = [
    { id: "100500", any: 11, other: "UA", props: "1-1" },
    { id: "100501", any: 22, other: "US", props: "5-9" }, // same id
    { id: "100502", any: 33, other: "EN", props: "1-4" }
];
 
const array2 = [
    { id: "100501", any: 22, other: "US", props: "9-9" }, // same id
    { id: "100503", any: 44, other: "AU", props: "7-4" }
];
 
// const arrayN = [...]
 
const result = mergeByKey("id", array1, array2);
 
// result is [
//  { id: "100500", any: 11, other: "UA", props: "1-1" },
//  { id: "100501", any: 22, other: "US", props: "9-9" }, // merged
//  { id: "100502", any: 33, other: "EN", props: "1-4" },
//  { id: "100503", any: 44, other: "AU", props: "7-4" }
// ]

Usage

Module array-merge-by-key exports function mergeByKey(key, array1, array2, ...) by default. Module uses Object.assign to merge two objects having the same key (property) value. The assignment is performed from right to left, which means that the most right passed array will have priority over previous ones. The comparison of key values is strict (=== operator). The order of elements in resulting array is the same as they appear in arguments, from left to right, from the first to the last element of arrays. Objects that do not have a key (property) will never be merged with others and will have the same memory reference. The new (merged) objects does not mutate old ones. The new array does not mutate any of passed arrays.

Objects having the same key values in the same array also merge. For example:

mergeByKey("id", [{ id: 1, test: "54" }, { id: 1, test: "76" }])
//  Results with [{ id: 1, test: "76" }]

Licence

MIT © Nikita Savchenko

Dependencies (0)

    Dev Dependencies (2)

    Package Sidebar

    Install

    npm i array-merge-by-key

    Weekly Downloads

    1,697

    Version

    1.0.1

    License

    MIT

    Last publish

    Collaborators

    • zitro