比较JavaScript中的三个数组
这是我的密码比较JavaScript中的三个数组,javascript,Javascript,这是我的密码 const obj1 = [{ext: '1287',ip: '(Unspecified)',queue: []}]; const obj2 = [{Queue: '222',Members: [{"ext":"1287"},{"ext":"4118"}],Callers: []},{Queue: '111',Members: [{"ext":"4131"},{"ext":"1287"},{"ext":"4138"}],Callers: []}]; const hasExt =
const obj1 = [{ext: '1287',ip: '(Unspecified)',queue: []}];
const obj2 = [{Queue: '222',Members: [{"ext":"1287"},{"ext":"4118"}],Callers: []},{Queue: '111',Members: [{"ext":"4131"},{"ext":"1287"},{"ext":"4138"}],Callers: []}];
const hasExt = ext => o2 => o2.Members.some(m => m.ext === ext)
const result = obj1.map(o1 => {
const newQueue = obj2
.filter(hasExt(o1.ext))
.map(m => m.Queue);
return { ...o1, queue: [...o1.queue, ...newQueue] };
})
console.log(result);
这是我的小提琴
在上面的部分中,我比较了obj1和obj2。如果obj1的ext key值与obj2的嵌套成员数组的ext key值匹配,则obj2 get的队列key值将被推送到obj1中的队列数组中。输出如下:
[
{
"ext": "1287",
"ip": "(Unspecified)",
"queue": [
"222",
"111"
]
}
]
现在我有了第三个这样的数组obj3
const obj3 = [{ ext: '1287',Prio: '1',State: 'Up'},{ ext: '1184',Prio: '1',State: 'Down'}]
我想比较obj1和obj3。如果obj1中的ext key值与obj3中的ext key值匹配,则obj3的Prio和State键应推送到obj1中的calls数组,最终数组应如下所示
[
{
"ext": "1287",
"ip": "(Unspecified)",
"queue": [
"222",
"111"
],
"calls": [
{
"Prio" : 1,
"State" : "Up",
}
],
}
]
我很难比较obj1和obj3,并在代码开头的结果常量中输出它。我该怎么做呢?你可以试试这样的东西
const obj2=[{
“分机”:“1287”,
“ip”:(未指定)“,
“队列”:[
"222",
"111"
]
}
];
常量obj3=[{ext:'1287',Prio:'1',State:'Up'},{ext:'1184',Prio:'1',State:'Down'}];
常量func=(对象J1、对象J2)=>{
obj1.forEach((a)=>
对象J2.forEach((b)=>{
if(b.ext==a.ext)a.calls=(a.calls | |[]).concat(Object.assign({},{Prio:b.Prio,State:b.State}));
})
);
};
func(obj2,obj3);
console.log(obj2)代码>您的对象是数组,而不是objectok。我编辑了问题谢谢Alex。我实现了你的逻辑,它对我有效。你能帮我解决这个问题吗