在javascript、jquery或vue中制作动态条件[关闭]
Posted
技术标签:
【中文标题】在javascript、jquery或vue中制作动态条件[关闭]【英文标题】:Making dynamic conditions in javascript, jquery or vue [closed] 【发布时间】:2018-07-28 22:41:52 【问题描述】:大家好,如果我有一个包含这种值的数组怎么办?
$query = [true, "&&", false, "||" true];
有帮手吗?或库根据给定的条件将其变为 1 个布尔结果。我只是在寻找可能能够做到这一点的想法或库,所以我不会浪费时间建立自己的方式。谢谢各位。
【问题讨论】:
您好@keannu - 只是让您知道,您的问题与Stack Overflow 无关。请花一些时间阅读帮助中心的相关页面,特别是"What topics can I ask about here"。从本质上讲,推荐帖子是不允许的,因为它们非常基于意见。 How to Ask !!! 【参考方案1】:评估是邪恶的,但最快的解决方案:
$query = [true, "&&", false, "||", true];
eval($query.join(" "));
【讨论】:
嗨,我能问一下它为什么是邪恶的吗? 原问题的一个问题,也是这个答案的问题:你如何区分(false && true) || true
和false && (true || true)
?
我已经研究过了,还有其他解决方案吗?
人们说“eval 是邪恶的”的原因是因为它本质上是在执行你可能不知道它来自哪里的任意代码。它本身并不邪恶——但它会造成一种情况,您可能正在执行您不知道的代码。基本上 - 使用eval
创建不安全的代码非常容易 - 这就是人们建议远离它的原因。
const $query = ['launch', '(', 'nuclearMissiles', ')']; eval($query.join(' '))
哎呀!【参考方案2】:
我不确定是否有专门用于此目的的库。所以作为一个想法
eval($query.join(' '))
应该可以工作,另一方面,这根本不好,因为eval
是邪恶的
如果您要问我,也许我会选择自定义解决方案,例如:
conditions = [
ctx => ctx.isThisSet,
ctx => ctx.andThisAlsoIsSet
]
conditions.every(c => c(someGlobalCtx)) // => true | false
另一方面,有些图书馆正在做这样的事情,但它们很重,你必须先研究文档:比如 https://www.npmjs.com/package/logic-query-parser
【讨论】:
以上是关于在javascript、jquery或vue中制作动态条件[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Javascript/jQuery 使用新对象制作其他表单?