javascript - 通过嵌套映射添加嵌套对象属性
问题描述
我希望能够分配一个新的嵌套属性,likeTotalForComment
如下所示:
{
comment: [
{
likeTotalForComment:
}
]
}
这是我目前写的:
commentLikes = data.map(
(v,i) => {
return( v.comment.map(
(c, ci) => {
newValue = sumFunc(data[i].comment[ci].like, 'value')
return data[i].comment[ci] = {likeTotalForComment: newValue}
}
)
)
}
)
console.log(commentLikes)
回报给了我这个
[[{likeTotalForComment: 2}, {likeTotalForComment: 4}]]
不是具有新嵌套属性的整个对象,这就是我想要的
这是一些示例数据:https ://codepen.io/schoenbl/pen/gVgJLm?editors=0010
解决方案
使用Object.spread将新属性合并到旧对象
data = data.map(v => {
return {...v, comment: v.comment.map(c => {
let newValue = sumFunc(c.like, 'value');
return { ...c, likeTotalForComment: newValue };
})}
});
或者只是为旧对象分配一个新属性
data.forEach(v => {
data.comment.forEach((comment) => {
let newValue = sumFunc(c.like, 'value');
comment['likeTotalForComment'] = newValue
});
})