精确检查一个布尔选项集

2023-11-26

嗯,这有点hacky:

function b2n(boo) {
    return boo ? 1 : 0;
}

if(b2n(opt1) + b2n(opt2) + b2n(opt3) !== 1) {
    throw new Error("Exactly one option must be set");
}

有没有更好的方法在 Javascript 中做到这一点?使用任何

  • 更智能的布尔/数字处理
  • 偷偷摸摸的数组或函数操作

等等。欢迎使用 Javascript 和 Node 解决方案。

在我的实际问题中,选项来自 Node 模块指挥官,所以我不处理 true 布尔值,只是处理 true 和 falsy 的东西。也可能有一个指挥官解决方案。


假设您有一系列选择,您可以这样做:

if(opts.filter(Boolean).length !== 1) {}

在我看来,你应该有一个具有三种可能状态的变量......

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

精确检查一个布尔选项集 的相关文章

随机推荐

  • Firebase 身份验证 iOS 12 无效令牌

    我有一个使用 Firebase 身份验证的应用程序 该身份验证使用电话短信验证和验证码 无 APNS 如果您使用的是 iOS 11 4 1 该应用程序可以在身份验证过程中正常运行 但是 如果您使用的是 iOS 12 则身份验证过程会导致无效
  • Iframe 中的会话在 Firefox 中工作,但在 Internet Explorer 中不工作

    我正在尝试让表单在 Internet Explorer 中工作 我发现当我在 Firefox 中提交此表单时 我可以启动一个会话并根据该会话将我的网络浏览器发送到正确的页面 然而 在 Internet Explorer 中 当我调试 SES
  • Android中如何设置按钮点击效果?

    在Android中 当我为按钮设置背景图像时 单击它时看不到任何效果 我需要在按钮上设置一些效果 以便用户可以识别出该按钮被单击 单击该按钮后 该按钮应变暗几秒钟 这个怎么做 这可以通过创建一个包含按钮状态列表的可绘制 xml 文件来实现
  • 箭头函数内的 async/await (Array#map/filter)

    我在此代码中遇到编译时错误 const someFunction async myArray gt return myArray map myValue gt return id my id myValue await service ge
  • 角度路由 - 重定向到外部站点?

    在 AngularJS 路由文件中 有一个选项otherwise路由 替换 404 routeProvider when otherwise redirectTo my path 有没有办法做到这一点 以便重定向到不在应用程序中的页面 我试
  • 保持终端焦点

    我有一个 python 脚本 它使用 selenium 来自动化网页 将焦点从需要用户输入的终端上移开 python 中是否有以编程方式将焦点切换回终端的方法 如果重要的话 我将在 Windows 7 上的 Windows 命令提示符中运行
  • 长周期区块应用

    我的应用程序中有以下循环 var maxIterations Int 0 func calculatePoint cn Complex gt Int let threshold Double 2 var z Complex init re
  • const 的用处 (C++)

    我是一个 const 恶魔 我努力让一切尽可能 const 我尝试查看 const 和非 const 版本函数的各种反汇编输出 但尚未看到明显的改进 我假设现在的编译器能够使用非 const 函数来完成聪明的事情 而这些函数在技术上可能是
  • 从长到宽,重复两次测量

    我知道这个问题已经在 从长到宽 的标题下被问过很多次了 但我遇到了一种情况 我有两个重复测量的值变量 id sex time score1 score2 1 subject 1 m Time1 0 20926263 0 2499310 2
  • winutils.exe chmod 命令未设置权限

    gt D gt echo HADOOP HOME gt D Apps winutils hadoop 2 7 1 在与 HADOOP HOME 相同的磁盘上创建 tmp hive 文件夹 D gt dir tmp hive Director
  • 为什么 Jetpack Compose Preview 不显示任何内容?

    我正在使用 Jetpack Compose 预览仅显示标题 但如果我使用 dev13 版本 它工作正常 IDE Android Studio 4 2 Canary 7撰写 0 1 0 dev17 这是一个已知问题 它应该在 Android
  • Django 管理,自定义错误消息?

    我想知道如何在 Django 管理中显示错误消息 我的网站上有一个私人用户部分 用户可以在其中使用 点 创建请求 一个请求从用户的帐户中获取 1 或 2 个积分 取决于请求的两种类型 因此如果帐户有 0 个积分 则用户无法发出任何请求 在私
  • 无法加载文件或程序集“xxxx”或其依赖项之一。该系统找不到指定的文件

    在 VS2005 中 我们整个编程人员都收到此错误消息零星地它总是在贝尼控制项目 此错误消息每天会发生多次 并且在进入控件的设计模式时会发生 通常重建贝尼控制解决了问题 但有时必须重建整个解决方案 还有其他人解决了这个问题吗 有哪些建议或网
  • 在 ncurses 中捕获 control+key 的正确方法

    在 ncurses 中捕获 control key 的正确方法是什么 当前我正在这样做定义控制 如下所示 define ctl x x 0x1f 它工作正常 但问题是我无法同时捕获 C j 和 ENTER 这是因为 j 106 110101
  • java中可以连续分配对象吗?

    假设我有一大堆相对较小的对象 我需要经常迭代它们 我想通过提高缓存性能来优化我的迭代 所以我想分配物体 而不是引用 在内存上连续 所以我会得到更少的缓存未命中 并且整体性能可能会明显更好 在 C 中 我可以只分配一个对象数组 它会根据我的需
  • 为什么可以在持久卷上设置多个访问模式?

    例如在下面的例子中 apiVersion v1 kind PersistentVolumeClaim metadata name exmaple pvc spec accessModes ReadOnlyMany ReadWriteMany
  • 如何在 Java 程序中运行 Java 源代码

    我写了一些代码来编译Java源代码 然后它会生成 class 文件 问题是我该如何运行它 例如 我可以设置程序和类的名称 我使用了 prog p new prog 但是在这种情况下 类文件在编译之前还不存在 不太确定该怎么做 有人可以给我建
  • Oracle 何时/为何将 NaN 添加到数据库表中的行

    我知道 NaN 代表非数字 但是 我很难理解 Oracle 何时以及为何将其添加到一行中 是遇到小于 0 的值 如负数 还是垃圾值时 从文档中 Oracle 数据库数字数据类型存储正负定点和浮点数 零 无穷大以及作为未定义运算结果的值 不是
  • iPhone 上的 JSON POST 请求(使用 HTTPS)

    我托管了一个 WCF 服务 并且尝试在 iPhone 应用程序中将其用作 JSON POST 请求 我计划稍后使用 JSON 序列化器 但这就是我的请求 NSString jsonRequest username user password
  • 精确检查一个布尔选项集

    嗯 这有点hacky function b2n boo return boo 1 0 if b2n opt1 b2n opt2 b2n opt3 1 throw new Error Exactly one option must be se