Javascript Angular7:如何计算算术字符串

Javascript Angular7:如何计算算术字符串,javascript,angular,typescript,Javascript,Angular,Typescript,我使用的是Angular 7,我想计算一个算术函数,我收到的字符串如下: 我从一个服务中得到一个“值”,它是一个数字。我还得到一个“规则”作为@Input参数应用于该值,它是一个字符串,可以包含“>”,“您可以获得运算符并为每个运算符使用一个函数 函数求值(值、规则){ 常数 运算符={ “(a,b)=>a>b, “==”:(a,b)=>a==b }, [op,value2]=规则匹配(/^(|==)|.*$/g); 返回运算符[op](值,值2); } 控制台日志(评估(10,'2'));

我使用的是Angular 7,我想计算一个算术函数,我收到的字符串如下:


我从一个服务中得到一个“值”,它是一个数字。我还得到一个“规则”作为@Input参数应用于该值,它是一个字符串,可以包含“>”,“您可以获得运算符并为每个运算符使用一个函数

函数求值(值、规则){
常数
运算符={
“(a,b)=>a>b,
“==”:(a,b)=>a==b
},
[op,value2]=规则匹配(/^(|==)|.*$/g);
返回运算符[op](值,值2);
}
控制台日志(评估(10,'2'));
console.log(评估(10’==2’);

console.log(evaluate(10,==10');
您可以使用regex
(\D+)(\D+)
获取任何后跟数字的运算符。如果选择扩展它,您可以向
开关添加更多运算符

函数求值(值、规则){
常量[,运算符,数字]=规则匹配(/(\D+)(\D+/)
开关(操作员){
案例“>”:返回值>编号
案例“1”))
console.log(evaluate)(3,“您确信您将使用的
eval
上的数据是安全的吗?如果是,那么您可以寻找一种方法来启用此功能,或者绕过
unsafe eval
检查,因为它不是不安全的。否则,您需要另一种方法来处理它。
value = 10;
rule = ">2"
if (10 > 2) {
  console.log("this rule applies!");
}
const strValue: string = value.toString();
const expression = strValue.concat(rule);
if (eval(expression)) {
  console.log("this rule applies!");
}