首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >布尔逻辑,如果4中有1为真,则为true

布尔逻辑,如果4中有1为真,则为true
EN

Stack Overflow用户
提问于 2016-11-09 13:49:12
回答 3查看 221关注 0票数 2

我有4个变量,它们中的任何一个都可以是真或假。

代码语言:javascript
运行
复制
var a
var b
var c
var d

我想测试三个条件:

  1. 如果4中的1为真,则为true。
  2. 如果4中有2为真,则为true
  3. 如果4个中有3个为真,则为true

我知道,在以下情况下,0/4是正确的:

代码语言:javascript
运行
复制
a!=true && b!=true && c!=true && d!=true

在以下情况下,4/4是正确的:

代码语言:javascript
运行
复制
a==true && b==true && c==true && d==true

但我想不下去了。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-09 13:50:38

您只需使用布尔值添加变量即可。结果是一个数字。

代码语言:javascript
运行
复制
value = a + b + c + d;

然后你可以再检查一下这个号码,你想测试一下。

代码语言:javascript
运行
复制
var a = false, b = true, c = true, d = true,
    value = a + b + c + d;

console.log(value);

票数 2
EN

Stack Overflow用户

发布于 2016-11-09 13:52:47

当处理一堆您想要运行相同测试的“事物”时,使用数组对它们进行分组通常是有意义的。

代码语言:javascript
运行
复制
var collection = [a, b, c, d];

然后,您可以获得一个与过滤器匹配测试的元素数组。

代码语言:javascript
运行
复制
var true_elements = collection.filter(function (value) { return (value == true); });

然后,您可以计算结果:

代码语言:javascript
运行
复制
console.log(true_elements.length);

做任何你喜欢的测试

代码语言:javascript
运行
复制
if (true_elements.length === 1) { ... }
if (true_elements.length >= 1) { ... }
// etc
票数 1
EN

Stack Overflow用户

发布于 2016-11-09 13:53:38

Javascript允许您将布尔类型添加到一起。在此过程中,它将参数转换为整数类型,true为1,false为0。

所以你可以写

a + b + c + d == 3

作为对3个true值和1个false值的测试。

并不是所有语言都支持这一点(例如Java),但是Javascript、C和C++支持。注意使用-1作为True值的Visual类型语言。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40508583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档