1 |
|
2 |
|
3 |
|
4 |
|
5 | const isEmpty = require('lodash/isEmpty')
|
6 | const isObject = require('./is-object')
|
7 |
|
8 | function objectDiff(A, B) {
|
9 |
|
10 | if (!isObject(A) || !isObject(B)) return B
|
11 |
|
12 | return Object.keys(B).reduce((result, fieldB) => {
|
13 | if (isObject(B[fieldB])) {
|
14 | const subResult = objectDiff(A[fieldB], B[fieldB])
|
15 | if (!isEmpty(subResult)) result[fieldB] = subResult
|
16 | } else {
|
17 |
|
18 |
|
19 | if (A[fieldB] !== B[fieldB]) result[fieldB] = B[fieldB]
|
20 | }
|
21 |
|
22 | return result
|
23 | }, {})
|
24 | }
|
25 |
|
26 | module.exports = objectDiff
|