js 这种数据怎么根据某个值合并?

第一个数据:

[
    {
        "id": 59,
        "guid": 205
    },
    {
        "id": 49,
        "guid": 204
    },
    {
        "id": 60,
        "guid": 204
    }
]

第二个数据:

[
    {
        "id": 203
    },
    {
        "id": 205
    },
    {
        "id": 204
    }
]

上面两个怎么合并成这样的:

[
    {
        "id": 203
    },
    {
        "id": 205,
        "_id": [59]
    },
    {
        "id": 204,
        "_id": [49,60]
    }
]
阅读 1.3k
2 个回答
const list1 = [
    {
        "id": 59,
        "guid": 205
    },
    {
        "id": 49,
        "guid": 204
    },
    {
        "id": 60,
        "guid": 204
    }
];
const list2 =[
    {
        "id": 203
    },
    {
        "id": 205
    },
    {
        "id": 204
    }
];

list2.forEach((item) => {
    const res = list1.filter(({guid}) => guid === item.id)
    if (res) item._id = res.map(({id})=> id)
})




循环套循环呗。

提供一个简单实现:

const arr1 = [
    { "id": 59, "guid": 205 },
    { "id": 49, "guid": 204 },
    { "id": 60, "guid": 204 }
]
const arr2 = [
    { "id": 203 },
    { "id": 205 },
    { "id": 204 }
]
arr1.forEach(({id, guid}) => {
  const t = arr2.find(d => d.id === guid)
  if(!t._id) t._id = []
  t._id.push(id)
})
console.log(arr2)
// (3) [{…}, {…}, {…}]
// 0: {id: 203}
// 1: {id: 205, _id: [59]}
// 2: {id: 204, _id: [49, 60]}
// length: 3
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题