关于数组的合并

        var a1=[
            {name:"a",value:11},
            {name:"b",value:22},
            {name:"c",value:33},
            {name:"d",value:44},
        ]
        var a2=[
            {name:"a",value:111},
            {name:"b",value:222},
            {name:"c",value:333},
            {name:"d",value:444},
        ]
        var b = [
            {name:"a",value:11},
            {name:"b",value:22},
            {name:"c",value:333},
            {name:"d",value:44},
        ]

我想实现把两个数组a1和a2进行合并,存放到数组b里面。可以进行合并么。师傅说,要有一个映射对照,有一个对照关系,才能合并。因为我是前端,对数据库的主键什么的不是很了解。

阅读 2.1k
3 个回答

有什么限制条件吗,比如name或者value不同的进行归并,还是没有条件,就是合并

没条件的话可以使用concat

b = b.concat(a1,a2)

有限制的话需要遍历,比如name不同,才可以进行归并

a1.forEach(item=>{
    if(!b.some(bitem=>{
        return bitem.name == item.name
    })){
        b.push(item)
    }
})
a2.forEach(item=>{
    if(!b.some(bitem=>{
        return bitem.name == item.name
    })){
        b.push(item)
    }
})

Object.assgin 可以解决问题,问题是你想保留哪一个里面的值

数组合并用ES6的语法如下:

var a = [1,2,3];
var b = [4,5,6];
var c = [...a,...b];
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题