Object.keys(obj)
получаешь ключи, потом проверяешь данные по этим ключам. Если примитивный тип данных, то перезаписывай стразу, если масстив то пройдись по значениям и повторяй процедуру, если объект повторяй процедуру. Все чего не существует в первом добавляй из второго.