首页 > 解决方案 > 通过嵌套映射添加嵌套对象属性

问题描述

我希望能够分配一个新的嵌套属性,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

标签: javascript

解决方案


使用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
  });
})

推荐阅读