首先,我添加了一个jsFiddle,突出显示我正在尝试做的事情,在此处找到:http://jsfiddle.net/6Vbgd/3/
我正在尝试在JavaScript中进行动态计算解析,如果您输入SUM(Sales) + SUM(Revenue)
这样的计算,这很有效。
然而,SUM(Sales) * SUM(Revenue) + SUM(Sales)
将起作用(由于我的递归算法)从右向左工作,因此首先SUM(Revenue) + SUM(Sales)
。解决这个问题的方法是让用户输入括号来订购他们想要先做的计算部分。
对于我的生活,我无法弄明白......还有其他人做过同样的事吗?希望提供的代码能够进一步证明我正在尝试做的事情。
来自那里的代码:
var calculation = '(SUM(Sales) * SUM(Revenue)) + SUM(Sales)';
//var calculation = 'Sales';
var resorted = [];
// Need to enter into an array into the order of which calculations need to be run first.
// so, it should be...
// resorted[0] = SUM(Sales) * SUM(Revenue)
// resorted[1] = + SUM(Sales)
// Then I can parse it such as...
//var calculation = 'SUM(Sales) + (SUM(Sales) + SUM(Revenue))';
// Then... (as my JS calculations run from right to left)
//var calculation = 'SUM(Sales) + SUM(Sales) * SUM(Revenue)';