js数组对象合并?

现在有一段这样的代码:

var state = [] 
function set (value) {
   //代码
} 

set ({
    id:'1',
    name:'1',
    item:'1'
}) 

set ({
    id:'2',
    name:'2',
    item:'2'
}) 

set ({
    id:'2',
    name:'2',
    list:'2'
}) 

set ({
    id:'3',
    name:'3',
    item:'3'
}) 

这里id和name相同就合并,然后得到:

[
    {id:'1',name:'1',item:'1'},
    {id:'2',name:'2',item:'2',list:'2'},
    {id:'3',name:'3',item:'3'}
]

请问,set()函数该怎么写

阅读 3.9k
1 个回答

你用个变量把之前的参数存起来就可以啦.

function set(data) {
  if (!set.list) {
    set.map = {}
    set.list = []
  }
  if (!set.map[data.id]) {
    set.list.push(data)
    set.map[data.id] = data
  } else {
    Object.assign(set.map[data.id], data)
  }
  return set.list
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题