如何简化下一个代码:
rules = rules.map(x => Object.assign(x, x.ruleOption.options))
rules.forEach(x => delete x.ruleOption)
rules = _.keyBy(rules, 'code')
我开始主动使用Lodash,并尝试了解正确的使用方式。
答案 0 :(得分:0)
您可以将destructuring与rest syntax一起使用来获取ruleOption
,并使用ruleOption
创建一个新对象。然后,您可以使用object spread将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>