我正在开发一个项目,用户可以在其中定义要针对用户输入执行的公式。
在UI方面,用户可以输入varA和varB的值。 javascript代码应该拾取这两个值,将它们注入公式,如下所示:
varA + varB ** (1/2.0)
然后返回结果。
我面临的问题是一些操作(如上面举例说明的**
)没有直接映射到javascript,不得不以某种方式将这些公式转换为它。是否有任何库可以实现这种我可以使用的东西?
编辑:我找到了this,它完全符合我的需要(并且使用^
而不是**
,这是一个replace
。)
还有更好的吗?
您可以使用math.js库中的表达式解析器。虽然使用^
角色也是力量。
用法示例:
var parser = math.parser();
parser.eval('a = 1.2 / (2.3 + 0.7)'); // 0.4
parser.eval('2 * a'); // 0.8
parser.eval('5.08 cm in inch'); // 2 inch
parser.eval('sin(45 deg) ^ 2'); // 0.5
parser.eval('9 / 3 + 2i'); // 3 + 2i
parser.eval('det([-1, 2; 3, 1])'); // -7
使用ES6您可以执行以下操作:
let varA = 1
let varB = 5
const answer = varA + varB ** (1 / 2.0)
let varA = 1
let varB = 5
const answer = varA + varB ** (1 / 2.0)
const output = `${varA} + ${varB} ** (1 / 2.0) =\n${answer}`
document.querySelector('.output').innerHTML = output
.output {
font-size: 1.5em;
}
<pre class="output"></pre>