Skip to content

Effectively merge two or more arrays of objects into a single array by merging objects with the same value of specific property (key).

License

Notifications You must be signed in to change notification settings

nikitaeverywhere/array-merge-by-key

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Effectively merge two or more arrays of objects into a single array by merging objects with the same value of specific property (key).

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages