【发布时间】:2021-09-19 14:20:59
【问题描述】:
我正在尝试合并两个对象,它们都具有相同的相似键,但值不同。我希望他们保留不同的键,但将它们放在匹配的键值中
这是我的第一个 obj,
const obj1 = [
{
"p_id": 1,
"name": "Peter",
"status" : "Active"
},
{
"p_id": 2,
"name": "Kane",
"status" : "Active"
},
{
"p_id": 3,
"name": "William",
"status" : "Inactive"
}
]
}
我的第二个对象,
const obj2 = [
{ p_id: 1, type: 'home', no: '+01 234 5678' },
{ p_id: 1, type: 'work', no: '+09 111 2223' },
{ p_id: 2, type: 'home', no: '+12 345 6789' },
]
其实我是这样做的,
obj1.forEach((item) => {
Object.assign(item, {
phone: obj2.find(
(o) => o.p_id === item.p_id
)
});
});
// console.log(obj1) would be
[
{
"p_id": 1,
"name": "Peter",
"status" : "Active",
"phone" : {type: 'home', no: '+01 234 5678'}
},
{
"p_id": 2,
"name": "Kane"
"status" : "Active",
"phone" : {type: 'home', no: '+12 345 6789'}
},
{
"p_id": 3,
"name": "William"
"status" : "Inactive"
"phone" : undefined
}
]
但这不是我想要的。我想成为最终结果我需要的是这些数组之间的比较——最终结果应该是这样的:
const result = [
{
"p_id": 1,
"name": "Peter",
"status" : "Active",
"phone" : [
{type: 'home', no: '+01 234 5678'},
{type: 'work', no: '+09 111 2223'}
]
},
{
"p_id": 2,
"name": "Kane"
"status" : "Active",
"phone" : [
{type: 'home', no: '+12 345 6789'}
]
},
{
"p_id": 3,
"name": "William"
"status" : "Inactive"
"phone" : []
}
]
非常感谢您的帮助, 谢谢!
【问题讨论】:
-
这不是代码编写服务。向我们展示您所做的实际尝试,并正确解释问题到底出在哪里。 How to Ask, minimal reproducible example
-
@CBroe 当然我明白了,实际上我确实尝试了一些不同的方法..但最后我能够找到类似这个更新问题的东西。 (我更新了问题)。谢谢
标签: javascript node.js arrays object