如何在JavaScript中比较两个数学表达式? 例如“1 + x”和“x + 1”。
有一个JavaScript Math解析器,但我找不到比较解析表达式的逻辑: https://github.com/silentmatt/js-expression-eval/blob/master/test.js
还有其他选择吗?
由于
答案 0 :(得分:0)
您需要一个计算机代数系统(CAS)才能真正测试两个表达式是否相等。我在JavaScript中唯一知道的是javascript-cas,我不确定这是否符合您的要求。其他库如math.js和提到的js-expression-eval可以解析表达式,但是错过逻辑来理解两个表达式是否相等。
实用的方法可能是比较x
的许多不同值的两个表达式的结果,并查看它们是否具有相同的结果。但这并不总是有用,例如0/x+1
和x-x
为每个x
提供相同的结果,但它们并不相同。
答案 1 :(得分:0)
如果您需要知道相等性,那么您可以进行近似比较:
从表达式
中提取变量名称x+1
和1+x
所以有一个变量x
genre伪随机或它们的网格值集
使用当前变量集
解析每个表达式从genered数据集中尝试所有案例