/JSParse

A JS Logical expressions calculator components.

Primary LanguageJavaScriptMIT LicenseMIT

JSParse

build status GitHub release GitHub license 996.icu

A JS Logical expressions calculator components.

一个JS实现的逻辑运算表达式计算器组件。

Downloads 下载

JSParse-bom.js

JSParse-bom.min.js

Usage 调用示例

Performance Demo

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);

API 方法

JSParse.build(expression);

说明:根据表达式字符串生成可用于计算的表达式语法树。

params 输入参数:

String expression 表达式字符串(JS语法)

return 返回值:

CalcNode calcNode 用于计算的表达式语法树

CalcNode.calc(nullMode, calcVars)

说明:通过表达式语法树及变量输入值计算表达式返回结果。

params 输入参数:

Boolean nullMode 当计算变量为空时的表达式返回值
Object calcVars 参与计算的变量集

return 返回值:

Object result 表达式计算结果

CalcNode.toString()

说明:如果Node为root节点,则该方法返回原始表达式字符串,否则返回undefined。

params 输入参数:

return 返回值:

String expression 表达式

Supported Operators 已支持的运算符

运算符
(operator)
说明
(description)
!
-
*
/
% 取模
+
-
< 小于
<= 小于等于
> 大于
>= 大于等于
== 等于
!= 不等于
? : 条件表达式

Custom Operators 可扩展的自定义运算符

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。