Лодаш: как упростить - PullRequest
0 голосов
/ 07 июля 2019

Как упростить следующий код:

rules = rules.map(x => Object.assign(x, x.ruleOption.options))
rules.forEach(x => delete x.ruleOption)
rules = _.keyBy(rules, 'code')

Я начинаю активно использовать Lodash и пытаюсь понять, как правильно использовать.

1 Ответ

0 голосов
/ 07 июля 2019

Вы можете использовать деструктурирование с синтаксисом rest , чтобы получить ruleOption, и создать новый объект с 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>
...