逻辑运算的快捷方式

2024-04-08

我只是想知道,逻辑运算符(&&, ||)。就像如果我想做类似的事情i = i + 10, 我可以i += 10

我搜索这个的原因是因为我有一个验证函数,它分为几个函数。以下是模拟:

function f1(){
  return Math.ceil(Math.random()*10) %2 === 0? true:false
}

function f2(){
  return Math.ceil(Math.random()*10) %2 === 0? true:false
}

function f3(){
  return Math.ceil(Math.random()*10) %2 === 0? true:false
}

function f4(){
  return Math.ceil(Math.random()*10) %2 === 0? true:false
}

function validate(){
  var valid = true;
  valid = valid && f1();
  valid = valid && f2();
  valid = valid && f3();
  valid = valid && f4();
  
  console.log(valid);
}

validate();

我努力了&=

function f1(){
  return Math.ceil(Math.random()*10) %2 === 0? true:false
}

function f2(){
  return Math.ceil(Math.random()*10) %2 === 0? true:false
}

function f3(){
  return Math.ceil(Math.random()*10) %2 === 0? true:false
}

function f4(){
  return Math.ceil(Math.random()*10) %2 === 0? true:false
}

function validate(){
  var valid = true;
  valid &= f1();
  valid &= f2();
  valid &= f3();
  valid &= f4();
  
  console.log(valid);
}

validate();

现在这可以工作了,因为true & false = 0 and 0是假的,但这看起来更像是一个黑客,想知道是否有更好的方法来完成这样的任务?

Note:

我努力了valid = f1() && f2() && f3 && f4();,但在这种方法中,如果有任何函数返回false,后续函数不执行。

编辑 1 - 尼娜的建议

function f1(){
  console.log("f1");
  return Math.ceil(Math.random()*10) %2 === 0? true:false
}

function f2(){
  console.log("f2");
  return Math.ceil(Math.random()*10) %2 === 0? true:false
}

function f3(){
  console.log("f3");
  return Math.ceil(Math.random()*10) %2 === 0? true:false
}

function f4(){
  console.log("f4");
  return Math.ceil(Math.random()*10) %2 === 0? true:false
}

function validate(){
  var valid = true;
  var validateFuncList = [f1,f2,f3,f4];
  valid = validateFuncList.every(function (f) { return f(); });
  console.log(valid);
}

validate();

现在这是一个很好的答案,但是如果有人返回,这个答案就会停止false,这与valid = f1() && f2() && f3 && f4();

Edit 1

只是一个小更新。而不是做:valid = valid && func1() do valid = func1() && valid。第一种方法不会调用func1如果有效的是false.


也许您使用数组。它调用所有函数。

function validate() {
    return [f1(), f2(), f3()].every(Boolean);
}

或使用数组作为参数

function validate(a) {
    return a.every(Boolean);
}

// call
xy = validate([f1(), f2(), f3()]);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

逻辑运算的快捷方式 的相关文章

随机推荐

  • 延迟 LINQ 查询执行实际上是如何工作的?

    最近我遇到这样的问题 What numbers will be printed considering the following code class Program static void Main string args int nu
  • ASP.Net Core MVC - 自定义属性的客户端验证

    在以前版本的 MVC 框架中 自定义验证将通过实现IClientValidatable和GetClientValidationRules method 然而在 ASP Net Core MVC 中 虽然我们确实有IClientModelVa
  • Pyramid 的 add_static_view 是如何工作的?

    Pyramid 中的 add static view name path 如何工作 从文档字符串 The name参数是一个表示应用程序相关的字符串 本地 URL 前缀 它也可以是完整的 URL 这path参数是静态文件在磁盘上的路径 居住
  • Java 8 流,为什么要编译第 2 部分...或者什么是方法引用,真的吗?

    好的 这个 系列 中的第一个问题是this one https stackoverflow com questions 22561614 java 8 streams min and max why does this compile 现在
  • http 路径的处理方法不明确?

    我有一个 Spring 应用程序 我在其中声明了我的类 如下所示 Controller RequestMapping value rest api datasources produces MediaType APPLICATION JSO
  • hsqldb Oracle 模式选择立即更新

    Oracle语法中的HSQLDB似乎不支持NOWAIT HSQLDB版本 2 3 3 with SET DATABASE SQL SYNTAX ORA TRUE SQL 产生异常 select a b c from sometable wh
  • 动态更改 UITableView 的内容

    我有一个 NSURL 对象 它根据用户在搜索栏中输入的变量从我的网站获取数据 我将这些数据拆分为 NSArray 完成后 我希望在 UITableView 中显示数据 我的问题是这样的 是否可以将数据动态加载到 UITableView 中
  • Orbeon 4.5 - 如何传递请求参数?

    我们正在从 Orbeon 3 9 升级到 4 5 在 Orbeon 3 9 中 我们将请求参数传递给发送成功 URI oxf fr detail send success uri 当用户单击自定义提交按钮时 我们通过修改来做到这一点pers
  • 对资源管理器中选定的文件执行 PowerShell 命令

    如何在 PowerShell 中仅对资源管理器中选定的文件执行重命名命令 我有 PS 命令 但我不知道将其放在 Windows 注册表中的何处 以便可以在资源管理器的右键单击上下文菜单中访问 HKCR shell 包含您需要的内容 使用您想
  • 将静态数据(不随时间变化)添加到 LSTM 中的序列数据

    我正在尝试建立一个如下图所示的模型 请看下图 我想在 LSTM 层中传递序列数据 在另一个前馈神经网络层中传递静态数据 血型 性别 后来我想将它们合并 然而 我对这里的维度感到困惑 如果我的理解是正确的 如图所示 5维序列数据如何与4维静态
  • 提取 Zip 内的目录

    我正在编写一个脚本 将 zip 存档中的文件提取到该脚本所在的目录中 这是我的代码 zip new ZipArchive if zip gt open latest zip TRUE zip gt extractTo zip gt clos
  • Web 服务器内置 Azure 应用服务

    背景 我正在托管一个静态 Web 应用程序 由 NUXTJS 在 Azure 应用服务上生成 现在我想通过以下方式配置更多内容web config比如为多个域设置 CORS 设置 但我找不到任何文档来确定 Azure 应用程序服务中集成 安
  • VB.NET 和 COM Interop 看似随机崩溃

    我正在考虑用 VB 6 重写一个全新的 VB NET 应用程序 该应用程序在终端服务下运行并大量使用 COM 由于某种原因 该应用程序存在随机奇怪之处 随机访问冲突错误 WinDbg 异常分析指向 dll 如 comdlg32 dll ms
  • Bigquery 如果字段存在

    简而言之 有没有办法在不存在的 BQ 字段中进行查询 并接收这些字段的 null 值 我有几乎同样的问题BigQuery IF 字段存在 THEN https stackoverflow com questions 32276601 big
  • PL/SQL 游标 for 循环

    我相信我需要一个循环游标来浏览表 test data 中的 street1 列 我有一个程序需要测试表中的每一行 这是我到目前为止所拥有的 cursor c1 is street1 from test data Begin If Instr
  • 如何调用Parent重写方法

    我有两个类 Parent 和 Child 从 Child 类 我调用父类重写方法 show 从父类 我调用另一个方法 display 但由于调用了 Child 方法 该方法也被重写 我想从show方法调用Parent方法display pu
  • jQuery - 翻转时更改另一个图像的 src

    我想知道是否有人可以帮助我 我有 2 张图像 如果有意义的话 我希望能够在翻转另一张图像时更改其中一张图像的 src 例如 我有 2 张图片 当有人将鼠标悬停在 imimage2 jpg 上时 我希望 imimage1 jpg 更改为 im
  • 我如何将长文本视图(字符串)显示到android的多个页面中

    我正在开发一个看起来像电子书阅读器 text pdf 文件等 的应用程序 我有一个巨大的文本 分为不同的章节或页面 现在的问题是如何将整个内容分成若干页并一页一页地显示 我怎么知道屏幕适合的字符数 取决于屏幕尺寸和字体大小 我完全不知道从哪
  • Javascript 加载、就绪、domready、DOMContentLoaded 事件

    我有点迷失在 启动 事件 有很多不同的事件 并且在 DOM 和各种框架 如 jQuery 中以不同的方式命名 所有可能的启动事件有哪些 它们有何不同 您能否显示一个简单的时间线来演示这些事件的触发顺序 ready JavaScript 提供
  • 逻辑运算的快捷方式

    我只是想知道 逻辑运算符 就像如果我想做类似的事情i i 10 我可以i 10 我搜索这个的原因是因为我有一个验证函数 它分为几个函数 以下是模拟 function f1 return Math ceil Math random 10 2