详细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-有趣的是,你很可能是对的,我必须回去检查一下,这不是我第一次想得太多了!