Convert operator from string type to operator type

不打扰是莪最后的温柔 提交于 2019-12-20 07:48:03

问题


I want to generate something like this at random.

233 + 333 = 566

I mean the first number and the operator and the second number are generated at random.

So, I wrote this code now.

var x = parseInt(Math.random()*1000),
    y = parseInt(Math.random()*1000),
    operators = ['+', '-', '*', '/'],
    operatorNum = parseInt(Math.random()*4),
    operator = operators[operatorNum],
    result;

result = x + operator + y;

But this just gives me something like "748/264" as a string. It doesn't give me the result of the calculation generated.

I suppose I need to convert operator from string to operator type. But, I don't think there is a operator type.

Edited

I'm building a Chrome extension. As per the Chrome extension policy, I'm not allowed to use the eval function.


回答1:


Evaluate it:

result = eval(x + operator + y);

EDIT

Since you can't use eval, you need to build your own math functions. You can just specify the four functions inside that array (if you don't actually need to know their names), like:

myFunctions = [
    function(a, b){return a+b;}, 
    function(a, b){return a-b;}, 
    function(a, b){return a/b;}, 
    function(a, b){return a*b;}
];

Then just randomly pick one and call it with your x and y variables as parameters, just like you did before: result = myFunctions[parseInt(Math.random()*4)](x, y);.




回答2:


There are no built-in operator functions in JavaScript, but you can make your own pretty easily:

var operators = {
    '+': function(a, b) {
        return a + b;
    },
    '*': function(a, b) {
        return a * b;
    },
    ....
};

And then call the appropriate operator:

operators['+'](4, 7);  // 11

But here, you can just use eval and treat your string as JavaScript code:

eval('2 + 2');  // 4



回答3:


I think the solution here is to use eval()

result = eval(x + operator + y)

In this case it is safe to use eval, but Be warned - It is a dangerous function to use



来源:https://stackoverflow.com/questions/18679876/convert-operator-from-string-type-to-operator-type

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!