Задать вопрос
@yagyar001

Как найти сумму всех элементов многомерного объекта?

Всем привет. Учу js. Делаю задачу, а как сделать что то не понимаю. В общем дан объект, нужно найти сумму всех чисел в нем. И я запутался. В чем моя ошибка? Сделать нужно через for-in.
let obj = 	{
				key1: {
						a: 1, b: 2, 
						c: {
								d: 3,
								e: 4,
							}, 
						f: 5
					  },
				key2: {
						g: 6, h: 7
					  }
			};
let sum = 0;
for (key1 in obj) {
	for (key2 in obj[key1]) {
		for (key3 in obj[key1][key2]) {
			for (key4 in obj[key1][key2][key2]) {
				sum += key4;
			}
		}
	}
}
console.log(sum);
  • Вопрос задан
  • 1927 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
В чем моя ошибка?

В неприменении рекурсии:

const sum = val =>
  val instanceof Object
    ? Object.values(val).reduce((acc, n) => acc + sum(n), 0)
    : +val || 0;

Конечно, можно и без неё - но код получится посложнее и пообъёмнее:

function sum(val) {
  let result = 0;

  for (const stack = [ val ]; stack.length;) {
    const n = stack.pop();
    if (n instanceof Object) {
      stack.push(...Object.values(n));
    } else {
      result += +n || 0;
    }
  }

  return result;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
OfferCase Москва
от 400 000 ₽
ITK academy Нижний Новгород
от 80 000 до 120 000 ₽
Future Москва
от 50 000 до 70 000 ₽