Overview
Implement deepMerge(target, source) that recursively merges source into target. Source values overwrite target for non-object values. Objects are merged recursively.
Examples
deepMerge({ a: 1, b: { c: 2 }}, { b: { d: 3 }, e: 4 });
// { a: 1, b: { c: 2, d: 3 }, e: 4 }Solution
Reveal solution
function deepMerge(target, source) {
const result = { ...target };
for (const [key, val] of Object.entries(source)) {
if (val && typeof val === 'object' && !Array.isArray(val)
&& result[key] && typeof result[key] === 'object' && !Array.isArray(result[key])) {
result[key] = deepMerge(result[key], val);
} else {
result[key] = val;
}
}
return result;
}deep-merge.js
Deep Merge
mediumcodingJavaScriptObjects
Overview
Implement deepMerge(target, source) that recursively merges source into target. Source values overwrite target for non-object values. Objects are merged recursively.
Examples
deepMerge({ a: 1, b: { c: 2 }}, { b: { d: 3 }, e: 4 });
// { a: 1, b: { c: 2, d: 3 }, e: 4 }Solution
Reveal solution
function deepMerge(target, source) {
const result = { ...target };
for (const [key, val] of Object.entries(source)) {
if (val && typeof val === 'object' && !Array.isArray(val)
&& result[key] && typeof result[key] === 'object' && !Array.isArray(result[key])) {
result[key] = deepMerge(result[key], val);
} else {
result[key] = val;
}
}
return result;
}NameTopicDifficulty
103 of 103 problems