В вашем решении есть несколько проблем. Вместо прибавления ключа daff к sum, нужно прибавлять значение obj[daff]. Также вы не использовали рекурсию для обработки вложенных объектов. Вот исправленный вариант вашей функции:
let obj = {a: 1, b: {c: 2, d: 3, e: 4}, f: {g: 5, j: 6, k: {l: 7, m: {n: 8, o: 9}}}};
function func(obj) {
let sum = 0;
for(let daff in obj) {
if(typeof obj[daff] == 'object') {
sum += func(obj[daff]); // рекурсивный вызов для вложенных объектов
} else {
sum += obj[daff]; // прибавляем значение, а не ключ
}
}
return sum;
}
console.log(func(obj)); // Вывод: 45
Теперь функция обрабатывает вложенные объекты с помощью рекурсии и корректно суммирует значения элементов объекта.
Мой канал по WEB программированию - Заходим и подписываемся
С помощью рекурсии найдите сумму элементов этого объекта.
мое решение
let obj = {a: 1, b: {c: 2, d: 3, e: 4}, f: {g: 5, j: 6, k: {l: 7, m: {n: 8, o: 9}}}};
let sum = 0;
function func(obj) {
for(let daff in obj) {
if(typeof obj[daff] == 'object') {
sum += obj[daff];
} else {
sum += daff;
}
}
return sum ;
}
(func ({a: 1, b: {c: 2, d: 3, e: 4}, f: {g: 5, j: 6, k: {l: 7, m: {n: 8, o: 9}}}}));