我正在开发一个项目,用户可以在其中定义要针对用户输入执行的公式。
在UI方面,用户可以输入varA和varB的值。 javascript代码应该拾取这两个值,将它们注入公式,如下所示:
varA + varB ** (1/2.0)
然后返回结果。
我面临的问题是某些操作(如上面举例说明的**
)没有直接映射到javascript,不得不以某种方式将这些公式转换为它。是否有任何库可以实现这种我可以使用的东西?
修改:我找到了this,它完全符合我的要求(并合并^
代替**
,这是replace
的距离。)
还有更好的吗?
答案 0 :(得分:2)
您可以使用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
答案 1 :(得分:0)
使用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>