Javascript 从forEach返回对象?

Javascript 从forEach返回对象?,javascript,node.js,Javascript,Node.js,可以从forEach的返回构造对象吗?我做得怎么样: const data = {} object.rules.forEach(rule => { data[rule.name] = { body: [], type: rule.type } }) 我想怎样做: const data = object.rules.forEach(rule => { data[rule.name] = { body: [], type: rule.type } }) 考虑使用 和较短的版本

可以从forEach的返回构造对象吗?我做得怎么样:

const data = {}
object.rules.forEach(rule => {
  data[rule.name] = { body: [], type: rule.type }
})
我想怎样做:

const data = object.rules.forEach(rule => {
  data[rule.name] = { body: [], type: rule.type }
})
考虑使用

和较短的版本

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

不,您不能将
forEach
用于此目的。在数组对象上调用
forEach
会在数组对象中的每个元素处应用提供给
forEach
的回调函数

为此,您可以使用
reduce
,其中

对累加器和中的每个元素应用函数 数组(从左到右)以将其减少为单个值


有关此方法的详细说明,请查看。

每当您想将一个数组转换为另一个非数组的结构时,您的朋友就是您的朋友

console.log(
['a','b','c'].reduce((obj,char,index)=>{
obj[char]=索引;
返回obj;
}, {})
)
您可以将和用于单个对象

const data = Object.assign(...object.rules.map(
    rule => ({ [rule.name]: { body: [], type: rule.type } }))
);
用于
名称
类型


只需使用而不是
forEach
forEach()永远不会返回。尝试…在阵列的映射中?IUPI!与reduce一起工作!我不知道我能像那样使用reduce!。我会回答所有问题,但接受最老的。有趣,但更难阅读。不过,很高兴知道,你应该为此投赞成票:这是一个经验问题。
const data = object.rules.reduce(function(obj, rule) {
    obj[rule.name] = { body: [], type: rule.type }
    return obj;
}, {});
const data = Object.assign(...object.rules.map(
    rule => ({ [rule.name]: { body: [], type: rule.type } }))
);
const data = Object.assign(...object.rules.map(
    ({ name, type }) => ({ [name]: { body: [], type } }))
);