Overview
Implement squashObject(object) that flattens nested object keys using dot notation.
Examples
squashObject({ a: { b: 1, c: { d: 2 }}}); // { 'a.b': 1, 'a.c.d': 2 }Solution
Reveal solution
function squashObject(object) {
const result = {};
function recurse(obj, prefix) {
for (const [k, v] of Object.entries(obj)) {
const key = prefix ? `${prefix}.${k}` : k;
if (v !== null && typeof v === 'object' && !Array.isArray(v)) {
recurse(v, key);
} else {
result[key] = v;
}
}
}
recurse(object, '');
return result;
}squash-object.js
Squash Object
mediumcodingJavaScriptObjects
Overview
Implement squashObject(object) that flattens nested object keys using dot notation.
Examples
squashObject({ a: { b: 1, c: { d: 2 }}}); // { 'a.b': 1, 'a.c.d': 2 }Solution
Reveal solution
function squashObject(object) {
const result = {};
function recurse(obj, prefix) {
for (const [k, v] of Object.entries(obj)) {
const key = prefix ? `${prefix}.${k}` : k;
if (v !== null && typeof v === 'object' && !Array.isArray(v)) {
recurse(v, key);
} else {
result[key] = v;
}
}
}
recurse(object, '');
return result;
}NameTopicDifficulty
103 of 103 problems