Nest all content into snippets
This commit is contained in:
41
snippets/js/s/merge.md
Normal file
41
snippets/js/s/merge.md
Normal file
@ -0,0 +1,41 @@
|
||||
---
|
||||
title: Merge objects
|
||||
type: snippet
|
||||
language: javascript
|
||||
tags: [object,array]
|
||||
cover: guitar-living-room
|
||||
dateModified: 2020-10-21T21:54:53+03:00
|
||||
---
|
||||
|
||||
Creates a new object from the combination of two or more objects.
|
||||
|
||||
- Use `Array.prototype.reduce()` combined with `Object.keys()` to iterate over all objects and keys.
|
||||
- Use `Object.prototype.hasOwnProperty()` and `Array.prototype.concat()` to append values for keys existing in multiple objects.
|
||||
|
||||
```js
|
||||
const merge = (...objs) =>
|
||||
[...objs].reduce(
|
||||
(acc, obj) =>
|
||||
Object.keys(obj).reduce((a, k) => {
|
||||
acc[k] = acc.hasOwnProperty(k)
|
||||
? [].concat(acc[k]).concat(obj[k])
|
||||
: obj[k];
|
||||
return acc;
|
||||
}, {}),
|
||||
{}
|
||||
);
|
||||
```
|
||||
|
||||
```js
|
||||
const object = {
|
||||
a: [{ x: 2 }, { y: 4 }],
|
||||
b: 1
|
||||
};
|
||||
const other = {
|
||||
a: { z: 3 },
|
||||
b: [2, 3],
|
||||
c: 'foo'
|
||||
};
|
||||
merge(object, other);
|
||||
// { a: [ { x: 2 }, { y: 4 }, { z: 3 } ], b: [ 1, 2, 3 ], c: 'foo' }
|
||||
```
|
||||
Reference in New Issue
Block a user