【发布时间】:2018-09-17 07:34:28
【问题描述】:
这是我的代码
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);
这是我的 js 小提琴https://jsfiddle.net/pravinnavle/myzsvbLr/1/ 在上面的部分中,我比较了 obj1 和 obj2。如果来自 obj1 的 ext 键的值与 obj2 的嵌套成员数组的 ext 键匹配,则 obj2 的队列键的值被推送到 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 中的调用数组,最终的数组应该如下所示。
[
{
"ext": "1287",
"ip": "(Unspecified)",
"queue": [
"222",
"111"
],
"calls": [
{
"Prio" : 1,
"State" : "Up",
}
],
}
]
我在比较 obj1 和 obj3 并将其输出到代码开头的结果常量中时遇到了麻烦。我该怎么做?
【问题讨论】:
-
你的对象是数组而不是对象
-
好的。我编辑了问题
标签: javascript