Javascript动态调节
Javascript dynamic conditioning
我想构建一个IF
条件,该条件是根据它获得的参数动态构建的。更重要的是,预计这将作为一个插件构建。
例如,学生对象有 3 个参数,分别称为年龄、姓名phone_numbers。此外,还有一个用于选择参数的选项对象。
在这种情况下,
if(student.age >option.age & student.name == option.name & student.phonenumbers == option.phonenumbers ){
// do stuff
}
如果缺少任何参数,则不应将其包含在条件中。例如,假设在未定义 option.name 的情况下,则应按如下方式准备 if 条件,
if(student.age >option.age & student.phonenumbers == option.phonenumbers ){
// do stuff
}
此外,为什么需要这种东西,这里迭代了一个(500 个对象)学生对象的数组。上述条件可以拆分为单独的条件,但随后迭代将乘以条件数!!.所以我正在寻找一种将所有条件加成一个的方法。
但是,我的方法是将表达式创建为字符串,然后使用 eval(..)
执行它,但据我所知,使用 eval
可能会导致漏洞。
任何人都让我知道实现动态条件的方法。
请注意,JavaScript 和运算符是 &&
。
对于您的示例,这应该有效:
if((!student.age || student.age>option.age) &&
(!student.name || student.name==option.name) &&
(!student.phonenumbers || student.phonenumbers==option.phonenumbers)
) {
}
怎么样
function testStudent(student,option) {
var res = [];
var test = true;
if (student.age) res.push(student.age > option.age);
if (student.name) res.push(student.name == option.name);
if (student.phonenumbers) res.push(student.phonenumbers == option.phonenumbers);
for (var i=0;i<res.length;i++) {
test = test && res[i];
}
if (res.length > 0 && test) {
//do stuff
}
}
通用:
function testObjects(obj1,obj2) {
for (var o in obj1) { // assuming obj2 is a superset of obj1
if (o === "age" && obj1.age <= obj2.age) return false;
if (obj1.hasOwnProperty(o) && obj1[o] != obj2[o]) return false;
}
return true;
}
var ok = testObjects(student,option);
您可以将条件放在函数中,并将这些函数放在数组中。 这样您就可以在数组中执行循环并调用每个函数(条件)。
var aConds = [];
function firstCond(params) {return (params<0)};
function secondCond(params) {return(params!='hi')};
aConds.push(firstCond);
...
for(var i=0;i<aConds.length;i++)
{
if(!aConds[i](params)) console.log("a condition has not been meet");
}
在每个
条件下允许未定义是否有效?
if((student.age == undefined || student.age > option.age) && (student.name == undefined || student.name == option.name) ...
相关文章:
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 动态分配GA增强型电子商务跟踪器
- onkeyup无法动态创建多个文本区域
- 使用javascript将动态表从一个html页面打印到另一个html页
- 如何使Javascript动态html表及其上的事件
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 如何使用javascript从主svg对象动态创建svg视图框
- 试图在引导模式内动态生成图表,得到offsetWidth错误
- 通过在Dojo mobile ViewController.openExternalView中动态更改打开同一外部视图的
- 如何在Google柱状图中动态添加行/列
- 困在逻辑中试图定位动态的东西
- 在动态创建的元素上获取对特定选择器的引用
- 如何动态插入jquery代码
- 使用Google Visualization动态调用构造函数
- 使用jQuery动态添加表并在其中动态添加行
- d3基于用户选择动态更新节点
- Javascript动态调节
- 动态调节值从肥皂