Nunjucks多OR条件if语句异常求助:多比较判断逻辑失效
解决Nunjucks多条件比较的逻辑问题
嘿,这个问题我之前也踩过坑!你遇到的逻辑失效问题,核心是运算符用错了——用or连接多个“不等于”条件本身就是逻辑错误,不管tab.type取什么值,这个条件都会判定为真。
为什么原来的逻辑会失效?
咱们来拆解一下:假设tab.type是'placement',那tab.type != 'version1'和tab.type != 'default'这两个条件都是真的,or只要有一个条件为真整体就为真;如果tab.type是'version1',那tab.type != 'placement'和tab.type != 'default'又会成立;哪怕是'default',另外两个不等于的条件也会是真的。所以不管tab.type是这三个值里的哪一个,总有至少一个!=条件满足,导致整个if永远成立。
正确的写法
你想要的应该是“排除这三个值,只在tab.type是其他值时触发”,这时候需要用and连接所有不等于的条件,或者用更简洁的not in语法:
方式一:用and连接多条件
{% if (tab.type != 'placement') and (tab.type != "version1") and (tab.type != 'default') %} <!-- 这里放你的逻辑代码 --> {% endif %}
方式二:用not in(更简洁推荐)
Nunjucks支持数组包含判断,直接检查值不在目标数组里即可:
{% if tab.type not in ['placement', 'version1', 'default'] %} <!-- 这里放你的逻辑代码 --> {% endif %}
这样修改后,只有当tab.type不是这三个值中的任何一个时,条件才会成立,逻辑就正常啦!
内容的提问来源于stack exchange,提问作者D Ramirez
相关产品推荐
相关产品推荐

