访问Javascript数组中的运算符
我目前有以下javascript数组访问Javascript数组中的运算符,javascript,arrays,Javascript,Arrays,我目前有以下javascript数组 array = [2, 3, "+"] 我的目标是编写代码,获取数组的第二个元素(数组[1]),执行元素3(数组[2])到元素1(数组[0])中的任何运算符 例如,代码应该能够执行以下操作 [2,3,“+”]应输出5(3+2) [2,4,“*”]应输出8(4*2) 目前,我可以编写将“3+2”和“4*2”作为字符串返回的代码,但它不会执行该操作 任何帮助都将不胜感激 创建运算符和相应方法的映射,并使用操作数调用该方法,但如果您想要快速而肮脏的解决方案,只需
array = [2, 3, "+"]
我的目标是编写代码,获取数组的第二个元素(数组[1]),执行元素3(数组[2])到元素1(数组[0])中的任何运算符
例如,代码应该能够执行以下操作
[2,3,“+”]
应输出5(3+2)
[2,4,“*”]
应输出8(4*2)
目前,我可以编写将“3+2”和“4*2”作为字符串返回的代码,但它不会执行该操作
任何帮助都将不胜感激 创建运算符和相应方法的映射,并使用操作数调用该方法,但如果您想要快速而肮脏的解决方案,只需执行eval(危险的是输入来自用户)
创建运算符和相应方法的映射,并使用操作数调用该方法,但如果您想要快速而肮脏的解决方案,只需执行eval(危险的是输入来自用户) 您可以使用
eval()
,但与其打开那罐蠕虫,不如使用类似于
var operators = {
'+': function(a, b) { return a + b; },
'*': function(a, b) { return a * b; }
};
var result = operators[array[2]](array[0], array[1]);
如果要使用eval()
,请确保确认操作数仅为数字,并且运算符来自有效运算符的白名单。特别是如果您使用的是用户输入。您可以使用eval()
,但与其打开那罐蠕虫,不如使用类似于
var operators = {
'+': function(a, b) { return a + b; },
'*': function(a, b) { return a * b; }
};
var result = operators[array[2]](array[0], array[1]);
如果要使用
eval()
,请确保确认操作数仅为数字,并且运算符来自有效运算符的白名单。特别是当您使用用户输入时。下面的代码很容易实现
var result;
var s;
switch (array[2]) {
case "+":
result = array[0] + array[1];
s = result + "(" + array[0] + " " + array[2] + " " + array[1] + ")";
break;
case "-":
result = array[0] - array[1];
s = result + "(" + array[0] + " " + array[2] + " " + array[1] + ")";
break;
...
}
下面的代码很容易实现
var result;
var s;
switch (array[2]) {
case "+":
result = array[0] + array[1];
s = result + "(" + array[0] + " " + array[2] + " " + array[1] + ")";
break;
case "-":
result = array[0] - array[1];
s = result + "(" + array[0] + " " + array[2] + " " + array[1] + ")";
break;
...
}
要执行表达式,请使用eval函数,如下所示
eval(array[1] + array[2] + array[0]);
要执行表达式,请使用eval函数,如下所示
eval(array[1] + array[2] + array[0]);