将数学表达式从文本转换为计算表达式

transforming math expression from text into calculated one

本文关键字:表达式 转换 计算 文本      更新时间:2023-09-26

在某些计算中,我正在用类似的javascript生成一个数学表达式

var myExpression = '';
if (!isNaN(myVal) && myVal> 0) {
    myExpression += '(' + myVal+ ' * ' + someVal + ') +';                    
}

根据某些用户事件,我在console.log中得到了您所期望的生成的表达式

(1 * 1) + (10 * 5) + ...

(10 * 5) + ...

如何将这个数学表达式表示转换为实际表达式,并将其结果存储到变量中?

您可以在字符串上使用eval(),它将作为JavaScript运行。这将允许计算数学表达式:

eval(myExpression);

只需注意小心使用eval()。请参阅为什么使用JavaScript eval函数是个坏主意。尽管如此,人们现在可以使用JavaScript内置控制台做很多事情,因为用户可以在任何网页上执行他们想要的任何JavaScript。请参阅Prestaul关于这可能存在的潜在问题的回答的第三条评论。如果你确保变量不能被用户直接操纵,那么你的罚款。

您可以使用math.js,它自带表达式解析器:

math.eval('(1 * 1) + (10 * 5)');  // 51

或者在范围中提供变量,并在表达式中使用它们:

math.eval('(myVal * someVal)', {myVal: 2, someVal: 10});  // 20

您还可以将表达式解析为树,并在树上执行操作,请参阅文档:

http://mathjs.org/docs/expressions/parsing.htmlhttp://mathjs.org/docs/expressions/expression_trees.html