如何在Javascript中将数组元素转换为公式

如何在Javascript中将数组元素转换为公式,javascript,formula,Javascript,Formula,数学公式数组的元素如下所示: a = [1,'+',2,'-',3,'*',4,'/',5]; 我如何执行这些数字之间的所有算术操作。数组元素可能不同,因为它们是动态添加的。(数字都是偶数元素,符号都是奇数。第一个和最后一个元素总是数字。) 如果我不必对操作进行优先级排序(/,*,+,-),这并不困难。我尝试使用splice()方法,但出现了一些问题。也许我可以根据数学动作的优先级对元素进行排序 var a=[1',+',2',-',3',*',4',/',5]; log(a.join(“”

数学公式数组的元素如下所示:

a = [1,'+',2,'-',3,'*',4,'/',5];
我如何执行这些数字之间的所有算术操作。数组元素可能不同,因为它们是动态添加的。(数字都是偶数元素,符号都是奇数。第一个和最后一个元素总是数字。)

如果我不必对操作进行优先级排序(/,*,+,-),这并不困难。我尝试使用
splice()
方法,但出现了一些问题。也许我可以根据数学动作的优先级对元素进行排序

var a=[1',+',2',-',3',*',4',/',5];

log(a.join(“”),“=”,eval(a.join(“”))解决方案在于将公式字符串化,并像在javascript中一样执行它们。您可以调整解决方案以满足您的需要,但这将适用于您的情况

var a = [1,'+',2,'-',3,'*',4,'/',5];
var b = a.join('');
eval(b);

你必须按照菩萨的想法对它们进行分类,只要你能,它的计算是正确的。是的,它是正确的。那么正确的优先顺序是什么?第一个是乘法还是除法?乘法总是第一位的。1-2+3*4/5=1.4根据JS compliler(/then*then-then+,不知道为什么它会这样计算)1-2+3*4/5=1.6根据Windows Calc(我猜,它没有任何优先级)1-2+3*4/5=-3.4如果我们使用正确的运算符优先级(*/+-)@smus,这不是相同的操作。问题以1+2-3开头,你的评论以1-2+3开头是的,你们都是对的,是的,我在第二条评论中使用了另一个例子。我只是忘记了优先级是基于对的(乘法+除法和加法+减法)。一对一对。如果我们有*和/的话,优先权将转移到最左边的运算符。谢谢大家!我不知道,为什么你对我的问题轻描淡写,这里不是每个人都是很酷的程序员。所有人都会犯错误,有时我们会问一些简单的问题:)它(eval)没有算术优先级(/,*,+,-)