Javascript 从forEach返回对象?
可以从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 } }) 考虑使用 和较短的版本
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 } }))
);