Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
详细javascript条件简化_Javascript_Conditional Statements_Modulo - Fatal编程技术网

详细javascript条件简化

详细javascript条件简化,javascript,conditional-statements,modulo,Javascript,Conditional Statements,Modulo,我有以下相当详细的条件,我试图用一个更简单的版本来概括我的想法,但我没有取得任何进展 if( agent % $.settings.gridSize === 0 && value % $.settings.gridSize == 1 ){ // Dud }else if(agent % $.settings.gridSize == 1 && value % $.settings.gridSize === 0){ // Dud }else{

我有以下相当详细的条件,我试图用一个更简单的版本来概括我的想法,但我没有取得任何进展

if( agent % $.settings.gridSize === 0 && value % $.settings.gridSize == 1 ){
    // Dud
}else if(agent % $.settings.gridSize == 1 && value % $.settings.gridSize === 0){
    // Dud
}else{
    freeCells.push(value);
}
有没有一种方法可以通过一个
if
语句而不是使用一次性
if-else
实现相同的条件

比如:

if(!(a && b) && !(x && y)){
   // Do stuff
}

是的,这是可能的,你(几乎)已经自己回答了你的问题

您可以执行以下操作:

var gS = $.settings.gridSize;

if(!(agent % gS === 0 && value % gS == 1) && !(agent % gS == 1 && value % gS === 0)) {
    freeCells.push(value);
}

是的,这是可能的,你(几乎)已经自己回答了你的问题

您可以执行以下操作:

var gS = $.settings.gridSize;

if(!(agent % gS === 0 && value % gS == 1) && !(agent % gS == 1 && value % gS === 0)) {
    freeCells.push(value);
}

根据$.settings.gridSize等的可能值,您要查找的可能是:

if (agent % $.settings.gridSize !== value % $.settings.gridSize) {
    // Dud
} else {

这也使语义更加清晰:涉及
代理的模应与涉及
值的模“不同”(在
0/1
意义上),具体取决于$.settings.gridSize等的可能值,您可能要查找的是:

if (agent % $.settings.gridSize !== value % $.settings.gridSize) {
    // Dud
} else {
if (
    agent % $.settings.gridSize > 1
    ||
    (agent + value) % $.settings.gridSize !== 1
) {
    freeCells.push(value);
}
这也使得语义更加清晰:涉及
代理的模应与涉及
值的模“不同”(在
0/1
意义上)

if (
    agent % $.settings.gridSize > 1
    ||
    (agent + value) % $.settings.gridSize !== 1
) {
    freeCells.push(value);
}
我觉得这很能自我解释

编辑

事实上,这似乎不是自我解释

我对转换做了一些假设

  • //Dud
    意味着什么也不做
  • $.settings.gridSize
    是一个正整数,以后称为
    gridSize
  • agent
    value
    是非负整数
  • 对于要推送的
    代理%gridSize
    必须是
    0
    1
    。由于不涉及负数或小数部分,这意味着与
    agent%gridSize相同
    我觉得这很能自我解释

    编辑

    事实上,这似乎不是自我解释

    我对转换做了一些假设

  • //Dud
    意味着什么也不做
  • $.settings.gridSize
    是一个正整数,以后称为
    gridSize
  • agent
    value
    是非负整数


  • 对于要推送的
    代理%gridSize
    必须是
    0
    1
    。由于不涉及负数或小数部分,这意味着与
    代理%gridSize相同
    //Dud
    ?同样的事情是两次吗?你可以简化为
    if(!a | | | b)&(!x | | y)
    (或者,可以简化为
    if(!(a&&b | | x&&y))
    什么是
    /Dud
    ?是两次相同的事情吗?你可以简化为
    if(!a | | | b)&(!x&&y)
    (或者,可以简化为
    )哦,哈!好东西。顺便说一句,你在变量声明中留下了模,如果你删除了“代理%”,你很乐意接受为正确答案。啊,我明白了。我修正了。哦,哈!好东西。顺便说一句,你在变量声明中留下了模,如果你删除了“代理%”,你很乐意接受为正确答案。啊,我明白了。我修正了。不是真的。你能接受吗请解释一下你在转换中使用了什么语义,以及你忽略了哪些边缘情况?我特别感兴趣的是你从哪里得到的
    >1
    。@Bergi当然。不知怎的,我以为会有人怀疑。我尽了最大努力解释转换,但它比预期的要复杂一些。遗憾的是,我点燃了它tle经验。谢谢,我现在明白了。+1!不是真的。你能解释一下你在转换中使用了什么语义以及你忽略了哪些边缘情况吗?我特别感兴趣的是你从哪里得到的
    >1
    。@Bergi当然。不知怎的,我以为会有人怀疑。我尽力解释转换,但没有成功比预期的要复杂一点。遗憾的是,我没有什么经验。谢谢,我现在明白了。+1!我还认为
    $.settings.gridSize
    的唯一合理值是2。当你用这个神奇的数字替换变量时,语义不会变得更清晰吗?@Robert不寻常的假设,这个变量可以是任何东西(最多512个).torazaburo-有趣的是,你可能是对的,我必须回去检查一下,这不是我第一次想得太多了!我还认为,
    $.settings.gridSize
    的唯一合理值是2。当你用这个神奇的数字替换变量时,语义会变得更清晰吗?@Robert不同寻常的假设,这个变量iable可以是任何东西(最多512个)。torazaburo-有趣的是,你很可能是对的,我必须回去检查一下,这不是我第一次想得太多了!