Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
字符串数组中的Javascript算术运算符_Javascript_Math - Fatal编程技术网

字符串数组中的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);