infra-cli
Version:
31 lines (28 loc) • 1.02 kB
JavaScript
const mergeObject = (target = {}, resource = {}) => {
const result = { ...target }
for (const key in resource) {
const value = resource[key]
const targetValue = result[key]
if (targetValue) {
if (typeof value === 'object' && typeof targetValue === 'object') {
if (Array.isArray(targetValue) && Array.isArray(value)) {
result[key] = [...targetValue, ...value]
} else if (!Array.isArray(targetValue) && !Array.isArray(value)) {
result[key] = { ...targetValue, ...value }
}
} else if (Array.isArray(value) && typeof targetValue !== 'object') {
result[key] = [targetValue, ...value]
} else if (Array.isArray(targetValue) && typeof value !== 'object') {
result[key] = [...targetValue, value]
} else if (typeof value !== 'object' && typeof targetValue !== 'object') {
result[key] = [targetValue, value]
}
} else {
result[key] = value
}
}
return result
}
module.exports = {
mergeObject
}