比较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。我实现了你的逻辑,它对我有效。你能帮我解决这个问题吗