gpt4 book ai didi

javascript - 在 JavaScript 中删除 forEach 内的 forEach

转载 作者:行者123 更新时间:2023-12-01 01:40:41 33 4
gpt4 key购买 nike

在我的代码中,我使用了两个 forEach 循环。但为了优化我的代码,我被告知删除内部的 forEach。我被指示不要在 forEach 循环内使用 forEach 循环。所以我不想循环第二个数组 obj3。我只想获取某个位置的值。这是我的代码:-

var obj2 = [{
"name": "4134",
"calls": [

]
}]

var obj3 = [{ Channel: 'SIP/4134-0004462a',
State: 'Up',
Accountcode: '7013658596'},
{ Channel: 'SIP/4334-sa',
State: 'Up',
Accountcode: '07717754702',
}]


var function = (obj2, obj3) => {
obj2.forEach((a) =>
obj3.forEach((b) => {
if (b.Channel.includes(a.name)) a.calls = (a.calls || []).concat(Object.assign({}, { MobileNo: b.Accountcode, Status : b.State}));

})
);
};

function(obj2, obj3);

上面的代码循环遍历 obj2 和 obj3,如果 name 键的值存在于 Channel 键的值中,那么它会从 obj3 中选取 Accountcode 和 State,并将它们推送到 obj2 的调用数组中。这是输出数组:-

    [ {
"name": "4134",
"calls": [
{
"MobileNo": "7013658596",
"Status": "Up"
}
]
}]

有什么建议吗如何解决这个问题?

最佳答案

试试这个

var channelArr = [];
const Channels = obj3.reduce((acc, curVal) => {
obj2.forEach((item)=>{
if(item.name == curVal.Channel.slice(4,8).toString()){
item.calls.push({'MobileNo':curVal.Accountcode,'Status': curVal.State})
}
})
return obj2;
}, [])

关于javascript - 在 JavaScript 中删除 forEach 内的 forEach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52437055/

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