字符串数组中的Javascript算术运算符
我有以下数组字符串数组中的Javascript算术运算符,javascript,math,Javascript,Math,我有以下数组 var signs = ['+', '-', '*', '/']; 下面的变量与数组中上面的每个符号一起添加 var right_digit = 1; var left_digit = 5; 我可以在JS中执行以下操作吗 var answer = left_digit sign[0] right_digit; 如果希望以这种方式动态评估运算符,可以使用eval: var answer = eval(right_digit + sign[0] + left_digit); 请
var signs = ['+', '-', '*', '/'];
下面的变量与数组中上面的每个符号一起添加
var right_digit = 1;
var left_digit = 5;
我可以在JS中执行以下操作吗
var answer = left_digit sign[0] right_digit;
如果希望以这种方式动态评估运算符,可以使用
eval
:
var answer = eval(right_digit + sign[0] + left_digit);
请注意,由于潜在的安全问题(如果数据不可信),不建议使用“eval”,而且速度较慢,因为每次执行代码时都必须对代码进行分析
更好的方法是使用开关
,如下所示:
function calculate(a, operator, b) {
switch (operator) {
case "+":
return a + b;
case "-":
return a - b;
case "*":
return a * b;
case "/":
return a / b;
}
}
var answer = calculate(right_digit, sign[0], left_digit);
您可以使用eval:
var answer = eval(left_digit + sign[0] + right_digit);
如果您想避免评估,可以采取以下措施:
var signs = {
'+': function(op1, op2) { return op1 + op2; },
...
};
var answer = signs['+'](left_digit, right_digit);
我很确定你不能这样做,但是你可以做一个函数来实现它
function action(a, b, c) {
switch (c) {
case "+":
return a+b;
case "-":
return a-b;
case "*":
return a*b;
default:
return a/b;
}
}
安全的
eval
解决方案(将过滤数字和符号,如果不是该格式,则抛出错误):
因此,您可以:
calculate(left + sign + right);
你为什么要这么做?这样的每个实现都比
1+5
慢。这是一个我需要随机选择符号的游戏。@AlienWebguy这是一种可能性,我不推荐它。公平地说,当我发表评论时,eval()
是你的全部答案;)
calculate(left + sign + right);