A JS Logical expressions calculator components.
一个JS实现的逻辑运算表达式计算器组件。
var exp = "prd.prd568.amount + prd.prd569.amount + b > 20000";
var prd = {
"prd568":{
"amount":10000
},
"prd569":{
"amount":10000
}
};
var calcVars = {};
calcVars["prd"] = prd;
calcVars["b"] = 1000;
var JSParser = new JSParse();//创建表达式计算对象
var calcNode = JSParser.build(exp); //生成语法树
var result = calcNode.calc(false, calcVars); //计算表达式
console.log("表达式:"+ calcNode.toString());
console.log(result);
说明:根据表达式字符串生成可用于计算的表达式语法树。
params 输入参数:
String expression 表达式字符串(JS语法)
return 返回值:
CalcNode calcNode 用于计算的表达式语法树
说明:通过表达式语法树及变量输入值计算表达式返回结果。
params 输入参数:
Boolean nullMode 当计算变量为空时的表达式返回值
Object calcVars 参与计算的变量集
return 返回值:
Object result 表达式计算结果
说明:如果Node为root节点,则该方法返回原始表达式字符串,否则返回undefined。
params 输入参数:
无
return 返回值:
String expression 表达式
运算符 (operator) |
说明 (description) |
---|---|
! | 非 |
- | 负 |
* | 乘 |
/ | 除 |
% | 取模 |
+ | 加 |
- | 减 |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
== | 等于 |
!= | 不等于 |
? : | 条件表达式 |
Already supported 已经支持的自定义函数:
函数 (function) |
说明 (description) |
---|---|
in(arr,ele) | 检查ele是否在数组arr中存在,返回boolean。 |
length(str) | 检查字符串str长度,返回int。 |
isNaN(val) | 实现js的isNaN方法。 |
number(val) | 实现js的Number方法。 |
parseInt(str,radix) | 实现js的parseInt方法。 |
parseFloat(str) | 实现js的parseFloat方法。 |
split(str, splitChar, returnIndex) | 实现字符串分隔方法,指定返回分隔后的某个字符。 |
min(number1, number2) | 实现数值比较,返回最小者。 |
max(number1, number2) | 实现数值比较,返回最大者。 |
getYear() | 获取当前年份,返回number。 |
getMonth() | 获取当前月份,返回number。 |
getDay() | 获取当前日期,返回number。 |
getHours() | 获取当前小时,返回number。 |
getMinutes() | 获取当前分钟,返回number。 |
getSeconds() | 获取当前秒,返回number。 |