Hard
How to Recursively Transform Nested Objects Using Custom Rules in JavaScript
In a data analysis tool, you need to process nested object structures. What will be the result of this transformation?
1class ObjectTransformer {2 static transform(data, rules) {3 return Object.entries(data).reduce((result, [key, value]) => {4 // Apply transformation rules5 if (rules[key]) {6 const transformed = rules[key](value);7 if (transformed !== undefined) {8 result[key] = transformed;9 }10 }11 // Handle nested objects12 else if (typeof value === 'object' && value !== null) {13 if (Array.isArray(value)) {14 result[key] = value.map(item =>15 typeof item === 'object' && item !== null16 ? this.transform(item, rules)17 : item18 );19 } else {20 result[key] = this.transform(value, rules);21 }22 }23 // Copy unchanged values24 else {25 result[key] = value;26 }27 return result;28 }, {});29 }30}3132const data = {33 id: 1,34 user: {35 name: "John",36 age: "30",37 scores: [38 { value: "95", subject: "math" },39 { value: "87", subject: "science" }40 ]41 }42};4344const rules = {45 age: value => Number(value),46 value: value => Number(value)47};4849console.log(ObjectTransformer.transform(data, rules));