@Karli

Код должен выводить сумму элементов объекта, что не так?

function func(obj) {
  let sum = 0;
  for (let key in obj) {
    if (typeof key == 'object') {
      sum += func(obj[key]);
    } else {
      sum += obj[key];
    }
  }
  return sum;
}

console.log(func({ a: 1, b: { c: 2, d: 3, e: 4 }, f: { g: 5, j: 6, k: { l: 7, m: { n: 8, o: 9 } } } }));
  • Вопрос задан
  • 84 просмотра
Решения вопроса 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Тип ключа - всегда 'string', вам надо проверять тип не ключа, а элемента по этому ключу.
Ответ написан
Комментировать
MrDecoy
@MrDecoy Куратор тега JavaScript
Верставший фронтендер
- if (typeof key == 'object') {
+ if (typeof obj[key] == 'object') {
Ответ написан
Комментировать
otdameskapizm
@otdameskapizm
Помог ответ? Отметь решением...
Вам нужно проверять не ключ на тип 'object', а значение это ключа
Можете попробовать вот так:
const sumValues = (obj) => {
  let sum = 0;
  const entries = Object.entries(obj); // [[key1, value1], [key2, value2]]
  for (const [key, value] of entries) {
    sum += typeof value === 'object' ? sumValues(value) : value;
  }
  return sum;
};
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы