JavaScriptif语句测试一个或另一个,但不能同时测试两者
JavaScript if statement test for one or the other but not both
你好,各位StackOverflowers。我现在脑子里有个屁,我好像想不通。
我有以下代码
if ((n % 3 === 0 || n % 5 === 0) &&( n % 3 !== 0 && n % 5 !== 0))
{
return true;
}
else {
return false;
}
基本上,我需要测试这个数字是否是3||5的倍数,但不是两者的倍数。
但是,当我输入任何我输入的数字(无论是3||5||两者的倍数)时,测试总是失败。我本以为这可以用一句话来表达。
不过,此代码确实可以正常工作。
if (n % 3 === 0 || n % 5 === 0)
{
if( n % 3 === 0 && n % 5 === 0)
{
return false;
}
else {
return true;
}
}
else {
return false;
}
但我想知道我在第一次测试中遗漏了什么。我希望所有的测试都在一个类似的测试中,但就像我说的那样,我脑子里有个屁,不知道我错过了什么。
您可以使用XOR运算符,或者
return (n % 3 === 0 ^ n % 5 === 0);
如果它可以被3和5整除,那么它将被15整除。
请尝试以下条件
if ((n % 3 === 0 || n % 5 === 0) && ( n % 15 !== 0))
更改
if ((n % 3 === 0 || n % 5 === 0) &&( n % 3 !== 0 && n % 5 !== 0))
至
if ((n % 3 === 0 || n % 5 === 0) && !(n % 3 === 0 && n % 5 === 0))
逻辑的第一部分是确定问题中的数字是3还是5的倍数,而第二部分应该是关于它们中是否只有一个是。所以……我改变了第二部分,看看两者是否匹配,然后我就没有了。
它应该是:if ((n % 3 === 0 || n % 5 === 0) &&( n % 3 !== 0 || n % 5 !== 0))
return (n % 3 === 0 && !(n % 5 === 0)) || (n % 5 === 0 && !(n % 3 === 0));
(未经测试)
您的第二次检查错误:
if ((n % 3 === 0 || n % 5 === 0) &&**( n % 3 !== 0 && n % 5 !== 0)**)
更改为:
(! (n%3 === 0 && n % 5 === 0 ) )
这是XOR
实现的一个简短版本,使用javascript 中的条件语句
if((n % 3 === 0)? (n % 5 !== 0) : (n % 5 === 0)) {
...
}
或者你也可以用这种方式进行比较,检查当两个条件被评估为布尔值时,何时返回不同的值(一个为真,另一个为假,反之亦然)
if( (n % 3 === 0) !== (n % 5 === 0)) {
...
}
所以这个代码可以写得很短
相关文章:
- JS可以在Chrome中工作,但不能在Firefox中工作
- WebRTC视频聊天可以在FF中使用,但不能在Chrome中使用
- jQuery Datepicker可以在Safari中工作,但不能在FF或Chrome中工作
- 三角库可以与firefox一起使用,但不能在Chrome中使用
- Highcharts可以从服务器加载数据,但不能更新
- 刷新GoogleMaps tile服务器可以使用JavaScript,但不能使用GWT
- node.js可以识别字符模式,但不能识别数字模式
- 如何在元素中处理鼠标事件,但不能在其子元素上处理
- Json到CSV下载,可以在chrome中工作,但不能在IE浏览器中工作
- jQuery$.post可以在chrome、safari中工作,但不能在FF中工作(声明成功回调函数未定义)
- Javascript可以在chrome中使用,但不能在其他浏览器中使用
- Iframe加载调整大小在Chrome中工作,但不能在IE或Firefox中工作
- Rails Production-可以工作,但不能编辑/删除/创建记录
- 能够在Highcharts中看到值,但不能看到图形
- Django,HTML,JS:<img src=“#">可以在HTML中工作,但不能在JS文件中工作
- Rails页面JS可以在真正的浏览器/手动测试中工作,但不能在PhantomJS&硒规格
- JavaScriptif语句测试一个或另一个,但不能同时测试两者
- regex可以在regex测试程序中工作,但不能在模式中工作
- 代码可以在代码测试器中工作,但不能在地址栏中工作
- 可以在正则表达式测试器中创建函数,但不能在应用程序中创建