Как упростить следующий код:
rules = rules.map(x => Object.assign(x, x.ruleOption.options)) rules.forEach(x => delete x.ruleOption) rules = _.keyBy(rules, 'code')
Я начинаю активно использовать Lodash и пытаюсь понять, как правильно использовать.
Вы можете использовать деструктурирование с синтаксисом rest , чтобы получить ruleOption, и создать новый объект с ruleOption. Затем вы можете использовать объект распространения , чтобы объединить ruleOptions.options с остальной частью объекта:
ruleOption
ruleOptions.options
const rules = [{ code: 'x', ruleOption: { options: { type: 'a' }}}, { code: 'y', ruleOption: { options: { type: 'b' }}}]; const newRules = _.keyBy( rules.map(({ ruleOption, ...obj }) => ({ ...obj, ...ruleOption.options })), 'code' ) console.log(newRules)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>