gpt4 book ai didi

javascript - 在 JavaScript 中比较三个数组

转载 作者:行者123 更新时间:2023-12-03 01:06:52 24 4
gpt4 key购买 nike

这是我的代码

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 fiddle https://jsfiddle.net/pravinnavle/myzsvbLr/1/在上面的部分中,我比较了 obj1 和 obj2。如果 obj1 中的 ext 键的值与 obj2 的嵌套 Members 数组的 ext 键相匹配,则 obj2 的 Queue 键的值将被推送到 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 进行比较并将其输出到代码开头的结果常量中。我该怎么做?

最佳答案

你可以尝试类似的事情。

const obj2 = [{
"ext": "1287",
"ip": "(Unspecified)",
"queue": [
"222",
"111"
]
}
];

const obj3 = [{ ext: '1287',Prio: '1',State: 'Up'},{ ext: '1184',Prio: '1',State: 'Down'}];

const func = (obj1, obj2) => {
obj1.forEach((a) =>
obj2.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);

关于javascript - 在 JavaScript 中比较三个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52362826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com