gpt4 book ai didi

javascript - 如何简化嵌套的 if 语句树

转载 作者:行者123 更新时间:2023-11-30 19:39:54 25 4
gpt4 key购买 nike

我有一个嵌套的 if 语句树,它运行一个函数 16 次(我知道),每次都向该函数发送一组不同的元素。

该函数仅返回 true 或 false。

if(!checkSpecial(1,1,1,1)) {
if(!checkSpecial(1,1,1,0)) {
if(!checkSpecial(1,1,0,1)) {
if(!checkSpecial(1,0,1,1)) {
if(!checkSpecial(0,1,1,1)) {
if(!checkSpecial(1,1,0,0)) {
if(!checkSpecial(1,0,0,1)) {
if(!checkSpecial(0,0,1,1)) {
if(!checkSpecial(1,0,1,0)) {
if(!checkSpecial(0,1,0,1)) {
if(!checkSpecial(0,1,1,0)) {
if(!checkSpecial(1,0,0,0)) {
if(!checkSpecial(0,1,0,0)) {
if(!checkSpecial(0,0,1,0)) {
if(!checkSpecial(0,0,0,1)) {
if(!checkSpecial(0,0,0,0)) {
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
} else {
// do other stuff
}

如您所见,如果函数在每个实例中都返回 false,我想做其他事情。

如果函数返回 true,我不想做任何事情。

我的问题是,我知道必须有更好的方法来做到这一点,我假设通过某种循环,但我不知道这种类型的循环会被称为什么或它是如何工作的.

到目前为止我的修复:

for (var i = 0; i < 16; i++) { 
// HELP!
}

任何指针将不胜感激。谢谢。

最佳答案

您可以创建一个由数字 0-15 的二进制表示组成的数组,然后在调用以数组项作为参数的函数时检查它们中的每个是否返回 false:

const combinations = Array.from(
{ length: 16 },
(_, i) => (i >>> 0).toString(2).padStart(4, '0').split('').map(Number)
);

console.log(combinations)
/*
if (combinations.every(combination => checkSpecial(...combination) === false)) {
// every result was false
} else {
// at least one result wasn't false
}
*/

关于javascript - 如何简化嵌套的 if 语句树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55506031/

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