@t256e

Как объединить несколько объектов в один?

подскажите пожалуйста, как такие объекты в один?

var arrayObj = [
  {
    animals: {
      cat: {
        voice: 'meow',
        other: {
          name: 'Tom'
        }
      },
      dog: {
        voice: 'gav'
      }
    }
  },
  {
    animals: {
      cat: {
        tail: true
      },
      dog: {
        eyes: 'two'
      }
    }
  }
]


чтобы по итогу получилось так
var result = {
    animals: {
      cat: {
        voice: 'meow',
        other: {
          name: 'Tom',
        },
        tail: true,
      },
      dog: {
        voice: 'gav',
        eyes: 'two',
      }
    }
}


ссылка на код https://codepen.io/User2598/pen/WNyvEQQ?editors=0012
  • Вопрос задан
  • 192 просмотра
Решения вопроса 3
0xD34F
@0xD34F Куратор тега JavaScript
const merge = (target, ...sources) =>
  sources.reduce((acc, n) => (
    Object.entries(n).forEach(([ k, v ]) =>
      acc[k] = v instanceof Object
        ? merge(acc[k] instanceof Object ? acc[k] : {}, v)
        : v
    ),
    acc
  ), target);


const result = merge({}, ...arrayObj);
Ответ написан
coderisimo
@coderisimo Куратор тега JavaScript
Можно написать свою реализацию, а можно пойти путем для ленивых )))

ссылька

Ответ написан
VoidVolker
@VoidVolker Куратор тега JavaScript
Dark side eye. А у нас печеньки! А у вас?
Пригласить эксперта
Ваш ответ на вопрос

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

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