这个合并数组怎么改写比较好

数据源

let arr1 =[ {
    "nodenumber": 10,
    "processid": "1",
},
{
    "nodenumber": 20,
    "processid": "2,
}],

let arr2 =[ {
    "nodenumber": 10,
    "name":"我是节点1的name1"
},
{
    "nodenumber": 10,
    "processid": 我是节点1的name2,
},
{
    "nodenumber": 20,
    "name": 我是节点2的name1,
},
{
    "nodenumber": 20,
    "name": 我是节点2的name2,
},

],
变成:

[{
    "nodenumber": 10,
    "partname":"我是节点1的name1"
    "processid": "1"
 }, {
    "nodenumber": 10,
    "processid": 我是节点1的name2 },
    "processid": "1"
{
    "nodenumber": 20,
    "name": 我是节点2的name1,
    "processid": "2"
},
{
    "nodenumber": 20,
    "name": 我是节点2的name2,
    "processid": "2"
},]

   目前我的思路是 

const mappinglist = [];

          arr1.map((roadmapitem) => {
            arr2.forEach((bomitem) => {
              mappinglist.push({
                processid: roadmapitem.nodenumber === bomitem.nodenumber ? roadmapitem.processid : '',
                partname: bomitem.name,
                nodenumber: (roadmapitem.nodenumber = bomitem.nodenumber),
              });
            });
          });
阅读 1.2k
2 个回答
let result = arr2.map(item => {
    let foundItem = arr1.find(it => it.nodenumber === item.nodenumber);
    if(foundItem){
        return {
            ...item,
            ...foundItem
        }
    }
    return item;
});

看看是不是你想要的,还有,看一下数组map的用法,你的用法是错误的

arr2.map(
    function (o) {
        return { ...o, ...this[o.nodenumber] };
    },
    arr1.reduce((hash, o) => Object.assign(hash, { [o.nodenumber]: o }), {}),
);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题