如何使用数组中给定的一组规则验证值
how to validate a value with a set of rules given in an array?
我有一个值3000,我有一组规则在数组
var rule = [greaterthan-2000,lessthan-4000,greaterthan-5000,lessthan-6000];
现在我将如何用数组中给定的规则集验证值(3000)。
(注意:先满足哪个条件,即为结果。在本例中,'3000'满足rule[0]和rule[1],但输出应该是rule[0])
你可以使用一些有些迭代和数组,并为数组的每个成员运行给定的函数。一旦你返回true,它就停止扫描。因此,您可以使用它来测试每个规则函数(假设它们接受int),一旦找到,保存找到的结果并返回。下面是一个例子:
var x;
var foundRule = null;
rules.some(function (rule) {
if (rule.call(x)) {
foundRule = rule
return true;
}
}
可以从这个函数中得到运算符
var getop = function(input)
{
if(input.includes("greaterthan"))
return '>'
else if(input.includes("lessthan"))
return '<'
}
和这个函数的数字。
var getnum = function(input)
{
var pos = input.indexOf("-");
return(input.substring(pos+1,input.length))
}
现在使用check函数检查条件。
var check = function(number, conditions)
{
for(var i in conditions)
{
var op = getop(conditions[i]);
var cond_no = getnum(conditions[i]);
if(op == '>')
if(number > cond_no)
return i
if(op == '<')
if(number < cond_no)
return i
}
}
现在声明您的条件和它的数字,并获得输出
var conditions = ["greaterthan-2000","lessthan-4000","greaterthan-5000","lessthan-6000"];
var number = 3000;
console.log("rule["+check(number,conditions)+"]");
将导致rule[0]
这是一个绕过使用function
本身的工作:
var rules = [
function(x) {
return x > 2000;
},
function(x) {
return x < 4000;
},
function(x) {
return x > 5000;
},
function(x) {
return x < 6000;
}
];
var indexOfRule = function(x) {
var j = -1;
for (var i = 0, l = rules.length; l > i; i++) {
if (rules[i](x)) { //function call, matches rule
j = i;
break;
}
}
return j;
};
alert(indexOfRule(3000)); //0
alert(indexOfRule(0)); //1
相关文章:
- fluxxor向一个flux实例添加一组以上的操作
- 我们怎样才能将内含子J用于一组特定的元素
- 使用linq.js按当前日期订购一组momentjs日期
- 正则表达式,从一组关键字中获取奇数
- 创建一组元素JointJS
- 如何在javascript中获取一组复选框值
- 一组(共组..)
- 使用JS将页面中的每个字母设置为随机颜色.为什么在页面的每个打开标记之前总是有一组额外的span标记
- 在一组复选框中,一次只允许选择一个
- 为什么在fabricjs中可选择的不适用于一组圆
- 如何在不刷新页面的情况下每次单击一组选项卡时刷新视图内容窗格
- 从一组具有相同起始和结束的所有段落的段落中提取包含特定字符串的段落
- 简单的Javascript文本编辑器或一组函数
- 基于日期范围的一组日期范围内的天数
- 处理对象数组并将它们以 4 个为一组进行分配
- 如何在 Javascript 中用一组字符拆分子字符串上的字符串
- 使一组对象与 jQuery 一起拖动
- 将不同的CSS规则添加到一组生成的元素中
- 如何获取输入字段,根据一组规则过滤输入并应用于另一个字段
- 如何使用数组中给定的一组规则验证值