从forEach返回对象?

FXu*_*Xux 3 javascript node.js

是否可以从forEach的返回中构造一个对象?我的状况:

const data = {}
object.rules.forEach(rule => {
  data[rule.name] = { body: [], type: rule.type }
})
Run Code Online (Sandbox Code Playgroud)

我想怎么做:

const data = object.rules.forEach(rule => {
  data[rule.name] = { body: [], type: rule.type }
})
Run Code Online (Sandbox Code Playgroud)

Pra*_*rma 5

考虑使用 Array.reduce

const data = object.rules.reduce((obj, rule) => {
  obj[rule.name] = { body: [], type: rule.type }
  return obj;
}, {})
Run Code Online (Sandbox Code Playgroud)

和较短的版本

const data = object.rules.reduce((obj, rule) => Object.assign({}, obj, {[rule.name]:{ body: [], type: rule.type } }), {})
Run Code Online (Sandbox Code Playgroud)