Ваше решение близко к решению, но в нем есть несколько ошибок:
1. Вы используете рекурсивный вызов функции solution вместо f, которую вы определили.
2. Вы присваиваете res[key] дважды: один раз перед проверкой на instanceof Object, а затем в блоке условия.
const f = (obj) => {
const res = {};
for (let key in obj) {
const newKey = `${key}_upd`;
if (Array.isArray(obj[key])) {
res[newKey] = obj[key].map((el) => {
return el instanceof Object ? f(el) : el;
});
} else {
res[newKey] =
obj[key] instanceof Object ? f(obj[key]) : obj[key];
}
}
return res;
};
console.log(f(data));