gpt4 book ai didi

javascript - 检查数组元素并查看它是否包含标志“我的循环不起作用”

转载 作者:行者123 更新时间:2023-12-02 21:31:39 26 4
gpt4 key购买 nike

尝试找出如果 rxDetails 的成员在 rxInfos 内包含基于以下场景中的增量计数器的标志组合,则它应该 retVlaue false 因为 for of 循环的逻辑应该位于成员级别,而不是完整的 rxDetails 对象。实现了什么错误有什么帮助吗?

main.js

const rxDetails = [
{"member": 1 , "rxInfos":[
{ "firstFillIndicator": "Y",
"acceptDigitalFirstFill": "Y" },
{ "firstFillIndicator": "Y",
"acceptDigitalFirstFill": "Y" },
]},
{"member": 2 , "rxInfos":[
{ "firstFillIndicator": "N",
"acceptDigitalFirstFill": "Y" },
{ "firstFillIndicator": "N",
"acceptDigitalFirstFill": "Y" },
]},

]



function validateOrderRequest(rxDetails) {
let retVlaue = false;
let firstFillCounter = 0;
let refillCounter = 0;
for (const member of rxDetails) {
for (const rx of member.rxInfos) {
if (rx.firstFillIndicator === "Y" && rx.acceptDigitalFirstFill === "Y") {
firstFillCounter++;
} else {
refillCounter++;
}
}
if (refillCounter > 0 && firstFillCounter > 0) {
retVlaue = true;
return retVlaue;
} else {
retVlaue = false;
}
}

return retVlaue;
}

console.log(validateOrderRequest(rxDetails));

最佳答案

如果对于数组中的任何给定元素,您希望返回true,该元素具有:

  • “Y”、“Y”的至少一种组合
  • 至少一种其他组合

您的问题是您的计数器从外部数组的开头运行到结尾。相反,您应该将声明移至第一个 for 循环内。

或者,您可以通过在循环中使用 some 数组函数来稍微简化一下。

validateOrderRequest(rxDetails) {
return rxDetails.some(member => {
let firstFillCounter = 0;
let refillCounter = 0;
for (let i = 0; i < member.rxInfos.length; i++) {
const rx = member.rxInfos[i];
if (rx.firstFillIndicator === "Y" &&
rx.acceptDigitalFirstFill === "Y") {
firstFillCounter++;
} else {
refillCounter++;
}

if (firstFillCounter > 0 && refillCounter > 0) {
return true;
}
}

return false;
});
}

some 将为它在回调中找到的条件的第一个元素返回 true。

在此示例中,如果成员具有至少一个“Y”、“Y”组合以及至少一个 !"Y"、!"Y"组合,则内部循环将返回 true

如果至少有一个成员满足此条件,则外部 some 返回 true。

演示:https://stackblitz.com/edit/angular-read7t

关于javascript - 检查数组元素并查看它是否包含标志“我的循环不起作用”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60608927/

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